jiuyiUniapp/jiuyi2/TUIKit/components/TUIGroup/server.ts

95 lines
3.1 KiB
TypeScript
Raw Normal View History

2024-12-18 15:46:27 +08:00
import TUICore, { TUIConstants, ExtensionInfo } from '@tencentcloud/tui-core';
import {
TUIStore,
StoreName,
TUIGroupService,
} from '@tencentcloud/chat-uikit-engine';
import { TUIGlobal } from '@tencentcloud/universal-api';
import settingSVG from '../../assets/icon/setting.svg';
import { isUniFrameWork } from '../../utils/env';
export default class TUIGroupServer {
static instance: TUIGroupServer;
private onCallParamsMap: Map<string, any>;
private onCallCallbackMap: Map<string, () => void>;
public constants: typeof TUIConstants;
constructor() {
TUICore.registerService(TUIConstants.TUIGroup.SERVICE.NAME, this);
TUICore.registerExtension(TUIConstants.TUIChat.EXTENSION.CHAT_HEADER.EXT_ID, this);
this.onCallParamsMap = new Map();
this.onCallCallbackMap = new Map();
this.constants = TUIConstants;
}
static getInstance(): TUIGroupServer {
if (!TUIGroupServer.instance) {
TUIGroupServer.instance = new TUIGroupServer();
}
return TUIGroupServer.instance;
}
public getOnCallParams(method: string): any {
return this.onCallParamsMap.get(method);
}
public getOnCallCallback(method: string): (() => void) | undefined {
return this.onCallCallbackMap.get(method);
}
public async onCall(method: string, params: any, callback: () => void): Promise<void> {
this.onCallParamsMap.set(method, params);
this.onCallCallbackMap.set(method, callback);
switch (method) {
case TUIConstants.TUIGroup.SERVICE.METHOD.CREATE_GROUP:
TUIStore.update(StoreName.GRP, 'isShowCreateComponent', true);
isUniFrameWork && TUIGlobal?.reLaunch({
url: '/TUIKit/components/TUIGroup/index',
});
break;
case TUIConstants.TUIGroup.SERVICE.METHOD.OPEN_GROUP_MANAGEMENT:
TUIGroupService.switchGroup(params.groupID);
TUIStore.update(StoreName.GRP, 'isShowManageComponent', true);
isUniFrameWork && TUIGlobal?.navigateTo({
url: '/TUIKit/components/TUIGroup/index',
});
break;
case TUIConstants.TUIGroup.SERVICE.METHOD.SELECT_GROUP_MEMBER:
TUIGroupService.switchGroup(params.groupID);
TUIStore.update(StoreName.GRP, 'isShowSelectComponent', true);
isUniFrameWork && TUIGlobal?.navigateTo({
url: '/TUIKit/components/TUIGroup/index',
});
break;
}
}
public onGetExtension(extensionID: string): ExtensionInfo[] {
const list: ExtensionInfo[] = [];
switch (extensionID) {
case TUIConstants.TUIChat.EXTENSION.CHAT_HEADER.EXT_ID:
list.push({
weight: 100,
icon: settingSVG,
text: '更多',
data: {},
listener: {
onClicked: this.groupManage.bind(this),
},
});
break;
}
return list;
}
private groupManage(params: any) {
TUICore.callService({
serviceName: TUIConstants.TUIGroup.SERVICE.NAME,
method: TUIConstants.TUIGroup.SERVICE.METHOD.OPEN_GROUP_MANAGEMENT,
params,
callback: () => {
isUniFrameWork && TUIGlobal?.navigateBack();
},
});
}
}