1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import TUIChatEngine, { IConversationModel, StoreName, TUIStore, TUITranslateService } from '@tencentcloud/chat-uikit-engine';
- import { transformTextWithKeysToEmojiNames } from '../emoji-config';
- import {
- IChatOfflinePushInfo,
- IOfflinePushInfoCreateParams,
- } from './interface';
- import { chatOfflinePushInfo, callOfflinePushInfo } from './info';
- import { DEFAULT_DESC, PUSH_SCENE } from './const';
- class OfflinePushInfoManager {
- private name = 'OfflinePushInfoManager';
- private static instance: OfflinePushInfoManager | null = null;
- private offlinePushInfo: any = {};
- private constructor() {
- this.offlinePushInfo = {
- [PUSH_SCENE.CHAT]: chatOfflinePushInfo,
- [PUSH_SCENE.CALL]: callOfflinePushInfo,
- };
- }
- public static getInstance(): OfflinePushInfoManager {
- if (!OfflinePushInfoManager.instance) {
- OfflinePushInfoManager.instance = new OfflinePushInfoManager();
- }
- return OfflinePushInfoManager.instance;
- }
- public getOfflinePushInfo(scene: PUSH_SCENE) {
- if (!Object.values(PUSH_SCENE).includes(scene)) {
- console.error(`${this.name} getOfflinePushInfo scene: ${scene} is invalid`);
- return null;
- }
- return this.offlinePushInfo[scene];
- }
- private genTitle(conversation: IConversationModel, userInfo: any) {
- let title = conversation?.getShowName();
- if (conversation.type === TUIChatEngine.TYPES.CONV_C2C) {
- title = userInfo?.nick || userInfo?.userID;
- }
- return title;
- }
- private genDesc(messageType: string, payload: any) {
- let desc = '';
- if (messageType === TUIChatEngine.TYPES.MSG_TEXT) {
- desc = transformTextWithKeysToEmojiNames(payload.text);
- }
- if (messageType === TUIChatEngine.TYPES.MSG_CUSTOM) {
- desc = payload.description;
- }
- return desc || TUITranslateService.t(`TUIChat.${DEFAULT_DESC[messageType]}`);
- }
- public create(options: IOfflinePushInfoCreateParams): IChatOfflinePushInfo {
- const { conversation, messageType = '', payload = {} } = options || {};
- const userInfo = TUIStore.getData(StoreName.USER, 'userProfile');
- const entity = {
- sender: conversation.type === TUIChatEngine.TYPES.CONV_GROUP ? conversation.groupProfile?.groupID : userInfo?.userID,
- nickName: userInfo?.nick,
- chatType: conversation.type === TUIChatEngine.TYPES.CONV_GROUP ? 2 : 1,
- version: 1,
- action: 1,
- };
- return {
- title: this.genTitle(conversation, userInfo),
- description: this.genDesc(messageType, payload),
- extension: JSON.stringify({ entity }),
- ...this.offlinePushInfo[PUSH_SCENE.CHAT],
- };
- }
- }
- export default OfflinePushInfoManager;
|