Browse Source

[feat]键盘插件,Ai键盘,抽取面板相同代码

hezihao 7 months ago
parent
commit
3ccaf1d58a

+ 1 - 3
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/IAiKeyboardCommonPanelComponent.kt

@@ -1,9 +1,7 @@
 package com.atmob.keyboard_android.component.child
 
-import com.atmob.keyboard_android.component.base.IUIComponent
-
 /**
  * AI键盘-通用类型-面板接口
  */
-interface IAiKeyboardCommonPanelComponent : IUIComponent {
+interface IAiKeyboardCommonPanelComponent : IAiKeyboardPanelComponent {
 }

+ 9 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/IAiKeyboardPanelComponent.kt

@@ -0,0 +1,9 @@
+package com.atmob.keyboard_android.component.child
+
+import com.atmob.keyboard_android.component.base.IUIComponent
+
+/**
+ * AI键盘-开场白类型-面板接口
+ */
+interface IAiKeyboardPanelComponent : IUIComponent {
+}

+ 1 - 3
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/IAiKeyboardProloguePanelComponent.kt

@@ -1,9 +1,7 @@
 package com.atmob.keyboard_android.component.child
 
-import com.atmob.keyboard_android.component.base.IUIComponent
-
 /**
  * AI键盘-开场白类型-面板接口
  */
-interface IAiKeyboardProloguePanelComponent : IUIComponent {
+interface IAiKeyboardProloguePanelComponent : IAiKeyboardPanelComponent {
 }

+ 2 - 53
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardCommonPanelComponent.kt

@@ -9,7 +9,6 @@ import android.view.View
 import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.atmob.keyboard_android.R
-import com.atmob.keyboard_android.component.base.BaseUIComponent
 import com.atmob.keyboard_android.component.base.FakeComponent
 import com.atmob.keyboard_android.component.base.RouteComponent
 import com.atmob.keyboard_android.component.child.IAiChatComponent
@@ -50,7 +49,7 @@ import me.drakeet.multitype.MultiTypeAdapter
  */
 class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
     context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
-) : BaseUIComponent<IAiKeyboardCommonPanelComponent>(context, attrs, defStyleAttr),
+) : BaseAiKeyboardPanelComponent<IAiKeyboardCommonPanelComponent>(context, attrs, defStyleAttr),
     IAiKeyboardCommonPanelComponent {
     private lateinit var vKeyboardKeyContent: View
     private lateinit var vCommonRouteComponent: RouteComponent
@@ -383,7 +382,7 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
     /**
      * 控制Ai生成内容面板,是否显示
      */
-    private fun controlAiChatPageShowing(isShow: Boolean) {
+    override fun controlAiChatPageShowing(isShow: Boolean) {
         // 切换到Ai生成内容页
         if (isShow) {
             vCommonRouteComponent.routeChildComponent(IAiChatComponent::class.java)
@@ -443,54 +442,4 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
             }
         }
     }
-
-    /**
-     * 生成<帮聊>的内容
-     *
-     * @param characterId 人设Id
-     */
-    private fun doChatSuperReply(
-        characterId: String,
-        startCallback: (() -> Unit)? = null,
-        finishCallback: (() -> Unit)? = null
-    ) {
-        val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
-        startCallback?.invoke()
-        // 获取数据
-        viewModel?.chatSuperReply(characterId, onSuccess = {
-            // 获取成功
-            finishCallback?.invoke()
-        }, onFail = {
-            // 获取失败
-            finishCallback?.invoke()
-        })
-    }
-
-    /**
-     * 生成<教你说>的内容
-     */
-    private fun doChatSuperSpeak(characterId: String, finishCallback: (() -> Unit)? = null) {
-        val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
-        viewModel?.chatSuperSpeak(characterId, onStart = {
-            controlAiChatPageShowing(true)
-        }, onSuccess = {
-            finishCallback?.invoke()
-        }, onFail = {
-            controlAiChatPageShowing(false)
-        })
-    }
-
-    /**
-     * 生成<开场白>的内容
-     */
-    private fun doChatPrologue(name: String, finishCallback: (() -> Unit)? = null) {
-        val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
-        viewModel?.chatPrologue(name, onStart = {
-            controlAiChatPageShowing(true)
-        }, onSuccess = {
-            finishCallback?.invoke()
-        }, onFail = {
-            controlAiChatPageShowing(false)
-        })
-    }
 }

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

@@ -7,7 +7,6 @@ import android.view.View
 import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.atmob.keyboard_android.R
-import com.atmob.keyboard_android.component.base.BaseUIComponent
 import com.atmob.keyboard_android.component.base.FakeComponent
 import com.atmob.keyboard_android.component.base.RouteComponent
 import com.atmob.keyboard_android.component.child.IAiChatComponent
@@ -47,7 +46,7 @@ import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.Li
  */
 class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
     context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
-) : BaseUIComponent<IAiKeyboardProloguePanelComponent>(context, attrs, defStyleAttr),
+) : BaseAiKeyboardPanelComponent<IAiKeyboardProloguePanelComponent>(context, attrs, defStyleAttr),
     IAiKeyboardProloguePanelComponent {
     private lateinit var vTabBarLayout: View
     private lateinit var vMagicIndicator: MagicIndicator
@@ -364,7 +363,7 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
     /**
      * 控制Ai生成内容面板,是否显示
      */
-    private fun controlAiChatPageShowing(isShow: Boolean) {
+    override fun controlAiChatPageShowing(isShow: Boolean) {
         // 切换到Ai生成内容页
         if (isShow) {
             vPrologueRouteComponent.routeChildComponent(IAiChatComponent::class.java)
@@ -411,42 +410,4 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
             }
         }
     }
-
-    /**
-     * 生成<帮聊>的内容
-     *
-     * @param characterId 人设Id
-     */
-    private fun doChatSuperReply(characterId: String) {
-        val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
-        viewModel?.chatSuperReply(characterId, onSuccess = {
-        }, onFail = {
-        })
-    }
-
-    /**
-     * 生成<教你说>的内容
-     */
-    private fun doChatSuperSpeak(characterId: String) {
-        val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
-        viewModel?.chatSuperSpeak(characterId, onStart = {
-            controlAiChatPageShowing(true)
-        }, onSuccess = {
-        }, onFail = {
-            controlAiChatPageShowing(false)
-        })
-    }
-
-    /**
-     * 生成<开场白>的内容
-     */
-    private fun doChatPrologue(name: String) {
-        val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
-        viewModel?.chatPrologue(name, onStart = {
-            controlAiChatPageShowing(true)
-        }, onSuccess = {
-        }, onFail = {
-            controlAiChatPageShowing(false)
-        })
-    }
 }

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

@@ -0,0 +1,70 @@
+package com.atmob.keyboard_android.component.child.impl
+
+import android.content.Context
+import android.util.AttributeSet
+import com.atmob.keyboard_android.component.base.BaseUIComponent
+import com.atmob.keyboard_android.component.child.IAiKeyboardPanelComponent
+import com.atmob.keyboard_android.util.KeyboardHolder
+
+/**
+ * Ai键盘-面板基类
+ */
+abstract class BaseAiKeyboardPanelComponent<T : IAiKeyboardPanelComponent> @JvmOverloads constructor(
+    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+) : BaseUIComponent<T>(context, attrs, defStyleAttr) {
+
+    /**
+     * 控制Ai生成内容面板,是否显示
+     */
+    protected abstract fun controlAiChatPageShowing(isShow: Boolean)
+
+    /**
+     * 生成<帮聊>的内容
+     *
+     * @param characterId 人设Id
+     */
+    protected fun doChatSuperReply(
+        characterId: String,
+        startCallback: (() -> Unit)? = null,
+        finishCallback: (() -> Unit)? = null
+    ) {
+        val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+        startCallback?.invoke()
+        // 获取数据
+        viewModel?.chatSuperReply(characterId, onSuccess = {
+            // 获取成功
+            finishCallback?.invoke()
+        }, onFail = {
+            // 获取失败
+            finishCallback?.invoke()
+        })
+    }
+
+    /**
+     * 生成<教你说>的内容
+     */
+    protected fun doChatSuperSpeak(characterId: String, finishCallback: (() -> Unit)? = null) {
+        val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+        viewModel?.chatSuperSpeak(characterId, onStart = {
+            controlAiChatPageShowing(true)
+        }, onSuccess = {
+            finishCallback?.invoke()
+        }, onFail = {
+            controlAiChatPageShowing(false)
+        })
+    }
+
+    /**
+     * 生成<开场白>的内容
+     */
+    protected fun doChatPrologue(name: String, finishCallback: (() -> Unit)? = null) {
+        val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
+        viewModel?.chatPrologue(name, onStart = {
+            controlAiChatPageShowing(true)
+        }, onSuccess = {
+            finishCallback?.invoke()
+        }, onFail = {
+            controlAiChatPageShowing(false)
+        })
+    }
+}