config.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. class TUIChatConfig {
  2. static instance: TUIChatConfig;
  3. private chatType: string;
  4. private features: Record<string, any>;
  5. constructor() {
  6. this.chatType = '';
  7. this.features = {
  8. DownloadFile: true,
  9. CopyMessage: true,
  10. DeleteMessage: true,
  11. RevokeMessage: true,
  12. QuoteMessage: true,
  13. ForwardMessage: true,
  14. TranslateMessage: true,
  15. VoiceToText: true,
  16. MultiSelection: true,
  17. EmojiReaction: true,
  18. InputEmoji: true,
  19. InputStickers: true,
  20. InputImage: true,
  21. InputVoice: true,
  22. InputVideo: true,
  23. InputFile: true,
  24. InputEvaluation: true,
  25. InputQuickReplies: true,
  26. InputMention: true,
  27. MessageSearch: true,
  28. ReadStatus: true,
  29. };
  30. }
  31. static getInstance(): TUIChatConfig {
  32. if (!TUIChatConfig.instance) {
  33. TUIChatConfig.instance = new TUIChatConfig();
  34. }
  35. return TUIChatConfig.instance;
  36. }
  37. setChatType(chatType: string) {
  38. this.chatType = chatType;
  39. }
  40. getChatType() {
  41. return this.chatType;
  42. }
  43. hideTUIChatFeatures(features: string[]) {
  44. if (!features) {
  45. return;
  46. }
  47. features.forEach((feature: string) => {
  48. if (this.features[feature]) {
  49. this.features[feature] = false;
  50. }
  51. });
  52. }
  53. getFeatureConfig(key?: string) {
  54. if (key) {
  55. return this.features[key];
  56. }
  57. return this.features;
  58. }
  59. }
  60. const ChatConfig = TUIChatConfig.getInstance();
  61. const hideTUIChatFeatures = ChatConfig.hideTUIChatFeatures.bind(ChatConfig);
  62. export {
  63. hideTUIChatFeatures,
  64. };
  65. export default ChatConfig;