UNPKG

@tencentcloud/roomkit-web-vue3

Version:

<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,

78 lines (70 loc) 2.48 kB
import { chatExtension, RoomState, MessageData } from '../chatExtension'; import { Message, Profile } from '@tencentcloud/chat'; import { getIsRoomCardMessage } from '../utils/judgeRoomMessage'; /** * Rendering cards requires isRoomMessage, isRoomCreateByMe, userList, isEnterRoom * ChatExtension provides basic functions such as editing messages, sending messages, displaying messages on the screen. * HandleRoomMessage implements business functions such as initiating meetings, joining meetings, leaving meetings. */ export class HandleRoomMessage { private message = {} as Message; public messageData: MessageData = { isInnerRoom: false, isRoomMessage: false, isRoomCreateByMe: false, isMessageFromMe: false, roomId: '', roomState: RoomState.CREATED, userList: [], myProfile: {} as Profile, ownerName: '', owner: '', }; public initialize(message: Message) { this.handleMessage(message); } public destroy() { chatExtension.setHistoryMeetingMessageList('delete', { ID: this.message.ID, messageData: this.messageData, }); } // Get card information private handleMessage(message: Message) { this.message = message; const currentUser = chatExtension.chatContext?.userID; const messagePayload = this.parseMessageData(message); if (!getIsRoomCardMessage(message)) return; const { businessID, owner, roomId, roomState, userList, ownerName } = messagePayload; const isRoomDestroyed = roomState === RoomState.DESTROYED; const isInnerRoom = chatExtension.getOnGoingRoomId() === roomId && userList.some(u => u.userId === currentUser) && !isRoomDestroyed; const isRoomCreateByMe = owner === currentUser; if (isRoomCreateByMe && isInnerRoom && !isRoomDestroyed) { chatExtension.setActiveMeetingMessage(message, messagePayload); } this.messageData = { isInnerRoom, isRoomMessage: businessID === 'group_room_message', isRoomCreateByMe, isMessageFromMe: message.from === currentUser, roomId, roomState, userList, myProfile: chatExtension.myProfile, ownerName, owner, }; chatExtension.setHistoryMeetingMessageList('add', { ID: message.ID, messageData: this.messageData, }); } public parseMessageData(message: Message) { return chatExtension.parseMessageData(message); } } export const handleRoomMessage = new HandleRoomMessage();