@tencentcloud/chat-uikit-uniapp
Version:
TUIKit 是基于 IM SDK 实现的一套 UI 组件,其包含会话、聊天、群组、个人资料等功能,基于这些精心设计的 UI 组件,您可以快速构建优雅的、可靠的、可扩展的 Chat 应用。
131 lines (116 loc) • 2.91 kB
text/typescript
const defaultFeatures = {
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,
InputAlbum: true,
InputCamera: true,
InputEvaluation: true,
InputQuickReplies: true,
InputMention: true,
MessageSearch: true,
ReadStatus: true,
ClearHistory: false,
};
enum FeaturesType {
DownloadFile = 'DownloadFile',
CopyMessage = 'CopyMessage',
DeleteMessage = 'DeleteMessage',
RevokeMessage = 'RevokeMessage',
QuoteMessage = 'QuoteMessage',
ForwardMessage = 'ForwardMessage',
TranslateMessage = 'TranslateMessage',
VoiceToText = 'VoiceToText',
MultiSelection = 'MultiSelection',
EmojiReaction = 'EmojiReaction',
InputEmoji = 'InputEmoji',
InputStickers = 'InputStickers',
InputImage = 'InputImage',
InputVoice = 'InputVoice',
InputVideo = 'InputVideo',
InputFile = 'InputFile',
InputAlbum = 'InputAlbum',
InputCamera = 'InputCamera',
InputEvaluation = 'InputEvaluation',
InputQuickReplies = 'InputQuickReplies',
InputMention = 'InputMention',
MessageSearch = 'MessageSearch',
ReadStatus = 'ReadStatus',
ClearHistory = 'ClearHistory',
}
class TUIChatConfig {
static instance: TUIChatConfig;
private chatType: string;
private features: Record<string, any>;
private theme: string;
constructor() {
this.chatType = '';
this.features = JSON.parse(JSON.stringify(defaultFeatures));
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;
}
showTUIChatFeatures(features?: string[]) {
if (!features) {
return;
} else {
features.forEach((feature: string) => {
this.features[feature] = true;
});
}
}
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;
}
resetFeatureConfig() {
this.features = JSON.parse(JSON.stringify(defaultFeatures));
}
}
const ChatConfig = TUIChatConfig.getInstance();
const hideTUIChatFeatures = ChatConfig.hideTUIChatFeatures.bind(ChatConfig);
export {
hideTUIChatFeatures,
FeaturesType,
};
export default ChatConfig;