瀏覽代碼

修改聊天输入框的extension会重复注册的问题

Pq 1 年之前
父節點
當前提交
23b2a300a7

+ 13 - 2
TUIKit/TUICore/tuicore/src/main/java/com/tencent/qcloud/tuicore/ExtensionManager.java

@@ -3,8 +3,10 @@ package com.tencent.qcloud.tuicore;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
+
 import com.tencent.qcloud.tuicore.interfaces.ITUIExtension;
 import com.tencent.qcloud.tuicore.interfaces.TUIExtensionInfo;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -27,7 +29,8 @@ class ExtensionManager {
 
     private final Map<String, List<ITUIExtension>> extensionHashMap = new ConcurrentHashMap<>();
 
-    private ExtensionManager() {}
+    private ExtensionManager() {
+    }
 
     public void registerExtension(String extensionID, ITUIExtension extension) {
         Log.i(TAG, "registerExtension extensionID : " + extensionID + ", extension : " + extension);
@@ -55,7 +58,7 @@ class ExtensionManager {
             extensionHashMap.put(extensionID, list);
         }
         if (!list.contains(extension)) {
-            list.add(0,extension);
+            list.add(0, extension);
         }
     }
 
@@ -71,6 +74,14 @@ class ExtensionManager {
         list.remove(extension);
     }
 
+    public List<ITUIExtension> getExtensionList(String extensionID) {
+        if (TextUtils.isEmpty(extensionID)) {
+            return null;
+        }
+        List<ITUIExtension> list = extensionHashMap.get(extensionID);
+        return list;
+    }
+
     @Deprecated
     public Map<String, Object> getExtensionInfo(String key, Map<String, Object> param) {
         Log.i(TAG, "getExtensionInfo key : " + key);

+ 7 - 0
TUIKit/TUICore/tuicore/src/main/java/com/tencent/qcloud/tuicore/TUICore.java

@@ -210,6 +210,13 @@ public class TUICore {
     }
 
     /**
+     *  Get Extension list
+     */
+    public static List<ITUIExtension> getExtensionListOne(String extensionID) {
+        return ExtensionManager.getInstance().getExtensionList(extensionID);
+    }
+
+    /**
      *  invoke Extension
      */
     public static void raiseExtension(String key, View parentView, Map<String, Object> param) {

+ 21 - 2
chatModule/src/main/java/com/cooleshow/chatmodule/utils/helper/IMThemManager.java

@@ -26,12 +26,16 @@ import com.google.android.material.tabs.TabLayout;
 import com.tencent.qcloud.tuicore.TUIConfig;
 import com.tencent.qcloud.tuicore.TUIConstants;
 import com.tencent.qcloud.tuicore.TUICore;
+import com.tencent.qcloud.tuicore.interfaces.ITUIExtension;
+import com.tencent.qcloud.tuicore.interfaces.TUIExtensionInfo;
 import com.tencent.qcloud.tuikit.timcommon.component.MessageProperties;
 import com.tencent.qcloud.tuikit.timcommon.util.ScreenUtil;
 import com.tencent.qcloud.tuikit.tuichat.TUIChatService;
 import com.tencent.qcloud.tuikit.tuichat.classicui.ClassicUIService;
 import com.tencent.qcloud.tuikit.tuichat.config.TUIChatConfigs;
 
+import java.util.List;
+
 /**
  * Author by pq, Date on 2023/7/3.
  */
@@ -87,8 +91,23 @@ public class IMThemManager {
         TUIChatConfigs.getConfigs().getGeneralConfig().setEnableVoiceCall(false);
         //群聊右上角-群设置(也可以通过这种方式去设置)
         if (BaseApplication.Companion.isTeacherClient()) {
-            TUICore.registerExtensionToFirst(TUIConstants.TUIChat.Extension.InputMore.CLASSIC_EXTENSION_ID, new CustomChatInputMusicExtension());
+            if (!checkRepeat()) {
+                TUICore.registerExtensionToFirst(TUIConstants.TUIChat.Extension.InputMore.CLASSIC_EXTENSION_ID, new CustomChatInputMusicExtension());
+            }
+        }
+    }
+
+    private boolean checkRepeat() {
+        List<ITUIExtension> extensionListOne = TUICore.getExtensionListOne(TUIConstants.TUIChat.Extension.InputMore.CLASSIC_EXTENSION_ID);
+        if (extensionListOne != null) {
+            for (int i = extensionListOne.size() - 1; i >= 0; i--) {
+                ITUIExtension ituiExtension = extensionListOne.get(i);
+                if (ituiExtension instanceof CustomChatInputMusicExtension) {
+                    return true;
+                }
+            }
         }
+        return false;
     }
 
     public void setTabViewStyles(TabLayout tableLayout) {
@@ -183,7 +202,7 @@ public class IMThemManager {
         }
     }
 
-    public void setTextDrawableStyles(TextView... textView){
+    public void setTextDrawableStyles(TextView... textView) {
         for (int i = 0; i < textView.length; i++) {
             setTextDrawableStyle(textView[i]);
         }