123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import TUICore, { TUIConstants } from '@tencentcloud/tui-core';
- import {
- IMessageModel,
- TUIStore,
- StoreName,
- TUIChatService,
- } from '@tencentcloud/chat-uikit-engine';
- import TUIChatConfig from './config';
- export default class TUIChatServer {
- public currentConversationID: string = '';
- public currentMessageList: IMessageModel[] = [];
- constructor() {
- // register service
- TUICore.registerService(TUIConstants.TUIChat.SERVICE.NAME, this);
- // watch current conversationID
- TUIStore.watch(StoreName.CONV, {
- currentConversationID: (id: string) => {
- this.currentConversationID = id;
- },
- });
- // watch current conversation message list
- TUIStore.watch(StoreName.CHAT, {
- messageList: (list: IMessageModel[]) => {
- this.currentMessageList = list;
- },
- });
- }
- public onCall(method: string, params: any, callback: any): any {
- let message;
- switch (method) {
- case TUIConstants.TUIChat.SERVICE.METHOD.UPDATE_MESSAGE_LIST:
- message = params.message;
- // Two screen-up situations
- // 1. If the call message conversationID is currentConversation,
- // You need to use UPDATE_MESSAGE_LIST to update the messageList of TUIStore in the engine to display it on the screen
- // (because you cannot get the messages you sent at this time)
- // 2. If the call message conversationID is not currentConversation,
- // The next time you switch to the conversation where the call message is located, getMessageList can get all the call messages you sent
- // No need to process here
- if (message?.conversationID === this.currentConversationID) {
- const messageList = [...this.currentMessageList, message];
- TUIStore.update(StoreName.CHAT, 'messageList', messageList);
- }
- break;
- case TUIConstants.TUIChat.SERVICE.METHOD.SEND_CUSTOM_MESSAGE:
- TUIChatService.sendCustomMessage(params).then((res: any) => {
- callback && callback(res);
- });
- break;
- case TUIConstants.TUIChat.SERVICE.METHOD.SEND_TEXT_MESSAGE:
- TUIChatService.sendTextMessage(params).then((res: any) => {
- callback && callback(res);
- });
- break;
- case TUIConstants.TUIChat.SERVICE.METHOD.SET_CHAT_TYPE:
- TUIChatConfig.setChatType(params?.chatType);
- break;
- case TUIConstants.TUIChat.SERVICE.METHOD.CLOSE_MESSAGE_POP_MENU:
- TUIStore.update(StoreName.CUSTOM, 'isShowMessagePopMenu', false);
- break;
- default:
- break;
- }
- }
- }
|