Browse Source

[feat]键盘插件,修复默认第一个Tab,没有选中的问题

hezihao 8 months ago
parent
commit
5ac5c380b4

+ 3 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/base/interceptor/LoginRouteInterceptor.kt

@@ -48,6 +48,9 @@ class LoginRouteInterceptor : IRouteInterceptor {
                 // 不需要登录,直接放行
                 // 不需要登录,直接放行
                 callback.onContinue()
                 callback.onContinue()
             }
             }
+        } else {
+            // 非业务组件,放行
+            callback.onContinue()
         }
         }
     }
     }
 }
 }

+ 18 - 5
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardProloguePanelComponent.kt

@@ -149,10 +149,7 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
                     // 点击Tab,切换页面
                     // 点击Tab,切换页面
                     titleView.setOnClickListener(object : OnClickListener {
                     titleView.setOnClickListener(object : OnClickListener {
                         override fun onClick(v: View?) {
                         override fun onClick(v: View?) {
-                            // 更新Tab
-                            val newTab = mTabList[index]
-                            KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
-                                ?.updateCurrentPrologueTab(newTab)
+                            handleTabClick(index)
                         }
                         }
                     })
                     })
                     return titleView
                     return titleView
@@ -276,7 +273,7 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
                 vMagicIndicator.navigator.notifyDataSetChanged()
                 vMagicIndicator.navigator.notifyDataSetChanged()
                 LogUtil.d("开场白列表更新,刷新Tab栏 => ${tabList.size}个Tab")
                 LogUtil.d("开场白列表更新,刷新Tab栏 => ${tabList.size}个Tab")
                 // 默认选中第一个Tab
                 // 默认选中第一个Tab
-                vMagicIndicator.onPageSelected(0)
+                handleTabClick(0)
             }
             }
             // 监听Tab切换,更新键盘列表
             // 监听Tab切换,更新键盘列表
             getKeyboardViewModel().currentPrologueTab.observe(getLifecycleOwner()) { newTab ->
             getKeyboardViewModel().currentPrologueTab.observe(getLifecycleOwner()) { newTab ->
@@ -322,6 +319,22 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
     }
     }
 
 
     /**
     /**
+     * 处理Tab切换
+     */
+    private fun handleTabClick(index: Int) {
+        // 如果没有更新,不需要切换
+        val newTab = mTabList[index]
+        val currentTab = KeyboardHolder.getKeyboardService()
+            ?.getKeyboardViewModel()?.currentPrologueTab?.value
+        if (currentTab == newTab) {
+            return
+        }
+        // 更新Tab
+        KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+            ?.updateCurrentPrologueTab(newTab)
+    }
+
+    /**
      * 根据Tab,加载按键列表
      * 根据Tab,加载按键列表
      */
      */
     @SuppressLint("NotifyDataSetChanged")
     @SuppressLint("NotifyDataSetChanged")

+ 6 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/QuickSwitchComponent.kt

@@ -51,6 +51,12 @@ class QuickSwitchComponent @JvmOverloads constructor(
                 mModeSwitchPopupWindow.show(vModeSwitchLayout, HelpMode.HELP_CHAT, object :
                 mModeSwitchPopupWindow.show(vModeSwitchLayout, HelpMode.HELP_CHAT, object :
                     ModeSwitchPopupWindow.OnModeSelectedListener {
                     ModeSwitchPopupWindow.OnModeSelectedListener {
                     override fun onModeSelected(newMode: HelpMode) {
                     override fun onModeSelected(newMode: HelpMode) {
+                        // 如果当前模式和新模式相同,则不需要切换
+                        val currentHelpMode = KeyboardHolder.getKeyboardService()
+                            ?.getKeyboardViewModel()?.helpMode?.value
+                        if (currentHelpMode == newMode) {
+                            return
+                        }
                         // 切换模式
                         // 切换模式
                         KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
                         KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
                             ?.updateHelpMode(newMode)
                             ?.updateHelpMode(newMode)