jiuyiUniapp/jiuyi2/TUIKit/components/TUIChat/config.ts

84 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-12-18 15:46:27 +08:00
class TUIChatConfig {
static instance: TUIChatConfig;
private chatType: string;
private features: Record<string, any>;
private theme: string;
constructor() {
this.chatType = '';
this.features = {
DownloadFile: true,
CopyMessage: true,
DeleteMessage: true,
RevokeMessage: true,
QuoteMessage: true,
ForwardMessage: true,
TranslateMessage: true,
VoiceToText: true,
MultiSelection: true,
EmojiReaction: true,
InputEmoji: true,
InputStickers: true,
InputImage: true,
InputVoice: true,
InputVideo: true,
InputFile: true,
InputEvaluation: true,
InputQuickReplies: true,
InputMention: true,
MessageSearch: true,
ReadStatus: true,
};
this.theme = 'light';
}
static getInstance(): TUIChatConfig {
if (!TUIChatConfig.instance) {
TUIChatConfig.instance = new TUIChatConfig();
}
return TUIChatConfig.instance;
}
setChatType(chatType: string) {
this.chatType = chatType;
}
getChatType() {
return this.chatType;
}
hideTUIChatFeatures(features: string[]) {
if (!features) {
return;
}
features.forEach((feature: string) => {
if (this.features[feature]) {
this.features[feature] = false;
}
});
}
getFeatureConfig(key?: string) {
if (key) {
return this.features[key];
}
return this.features;
}
setTheme(theme: string) {
this.theme = theme;
}
getTheme() {
return this.theme;
}
}
const ChatConfig = TUIChatConfig.getInstance();
const hideTUIChatFeatures = ChatConfig.hideTUIChatFeatures.bind(ChatConfig);
export {
hideTUIChatFeatures,
};
export default ChatConfig;