81 lines
2.1 KiB
TypeScript
Raw Normal View History

2025-05-30 18:05:17 +08:00
import TUICore, { TUIConstants } from '@tencentcloud/tui-core';
import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
import { isPC } from '../../../utils/env';
import createGroup from '../../../assets/icon/start-group.svg';
import C2C from '../../../assets/icon/icon-c2c.svg';
import { CONV_CREATE_TYPE } from '../../../constant';
export interface IMenuItem {
icon?: string;
text: string;
data: {
name: string;
children?: any[];
};
listener?: {
onClicked: (...args: any[]) => void;
};
}
export default class ConversationHeaderServer {
static instance: ConversationHeaderServer;
static getInstance(): ConversationHeaderServer {
if (!ConversationHeaderServer.instance) {
ConversationHeaderServer.instance = new ConversationHeaderServer();
}
return ConversationHeaderServer.instance;
}
public getMenu(): any[] {
const list = this.generateMenuList();
if (!isPC && list.length > 0) {
2025-06-27 09:53:36 +08:00
return [
{
text: TUITranslateService.t('TUIConversation.发起会话'),
data: {
name: 'all',
children: list
}
}
];
2025-05-30 18:05:17 +08:00
}
return list;
}
private generateMenuList(): any[] {
const list = [
{
icon: C2C,
text: TUITranslateService.t('TUIConversation.发起单聊'),
data: {
2025-06-27 09:53:36 +08:00
name: CONV_CREATE_TYPE.TYPEC2C
2025-05-30 18:05:17 +08:00
},
listener: {
2025-06-27 09:53:36 +08:00
onClicked: this.createConversation.bind(this)
}
2025-05-30 18:05:17 +08:00
},
{
icon: createGroup,
text: TUITranslateService.t('TUIConversation.发起群聊'),
data: {
2025-06-27 09:53:36 +08:00
name: CONV_CREATE_TYPE.TYPEGROUP
2025-05-30 18:05:17 +08:00
},
listener: {
2025-06-27 09:53:36 +08:00
onClicked: this.createConversation.bind(this)
}
}
2025-05-30 18:05:17 +08:00
];
return list;
}
private createConversation(item: IMenuItem) {
// Create a conversation and notify conversationServer via TUICore.callService
TUICore.callService({
serviceName: TUIConstants.TUIConversation.SERVICE.NAME,
method: TUIConstants.TUIConversation.SERVICE.METHOD.CREATE_CONVERSATION,
2025-06-27 09:53:36 +08:00
params: item
2025-05-30 18:05:17 +08:00
});
}
}