Просмотр исходного кода

[feat]键盘插件,增加Flutter交互API定义

hezihao 1 год назад
Родитель
Сommit
65680c9097
14 измененных файлов с 336 добавлено и 65 удалено
  1. 3 0
      .fvmrc
  2. 21 1
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/enums/FlutterMethod.kt
  3. 70 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/FlutterBridgeManager.kt
  4. 5 64
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/IBridgeApi.kt
  5. 39 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/AiChatApi.kt
  6. 54 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/KeyboardApi.kt
  7. 21 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/RouteJumpApi.kt
  8. 16 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/UserApi.kt
  9. 21 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/req/SuperReplyReq.kt
  10. 21 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/req/SuperSpeakReq.kt
  11. 34 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/resp/PrologueListResp.kt
  12. 10 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/resp/PrologueResp.kt
  13. 11 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/resp/SuperReplyResp.kt
  14. 10 0
      plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/resp/SuperSpeakResp.kt

+ 3 - 0
.fvmrc

@@ -0,0 +1,3 @@
+{
+  "flutter": "3.29.2"
+}

+ 21 - 1
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/enums/FlutterMethod.kt

@@ -22,5 +22,25 @@ enum class FlutterMethod(val methodName: String) {
     /**
      * 获取人设列表
      */
-    GET_CHARACTER_LIST("getCharacterList")
+    GET_CHARACTER_LIST("getCharacterList"),
+
+    /**
+     * 获取开场白列表
+     */
+    GET_PROLOGUE_LIST("getPrologueList"),
+
+    /**
+     * 超会回
+     */
+    SUPER_REPLY("superReply"),
+
+    /**
+     * 超会说
+     */
+    SUPER_SPEAK("superSpeak"),
+
+    /**
+     * 开场白
+     */
+    PROLOGUE("prologue"),
 }

+ 70 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/FlutterBridgeManager.kt

@@ -3,9 +3,15 @@ package com.atmob.keyboard_android.util.bridge
 import com.atmob.keyboard_android.constant.PluginConfig
 import com.atmob.keyboard_android.enums.FlutterMethod
 import com.atmob.keyboard_android.util.bridge.model.base.EmptyResp
+import com.atmob.keyboard_android.util.bridge.model.req.SuperReplyReq
+import com.atmob.keyboard_android.util.bridge.model.req.SuperSpeakReq
 import com.atmob.keyboard_android.util.bridge.model.resp.CharacterListResp
 import com.atmob.keyboard_android.util.bridge.model.resp.CurrentKeyboardIdResp
 import com.atmob.keyboard_android.util.bridge.model.resp.KeyboardListResp
+import com.atmob.keyboard_android.util.bridge.model.resp.PrologueListResp
+import com.atmob.keyboard_android.util.bridge.model.resp.PrologueResp
+import com.atmob.keyboard_android.util.bridge.model.resp.SuperReplyResp
+import com.atmob.keyboard_android.util.bridge.model.resp.SuperSpeakResp
 import com.atmob.keyboard_android.util.bridge.util.FlutterMethodCaller
 import com.atmob.keyboard_android.util.bridge.util.NativeMethodRegistry
 import io.flutter.embedding.engine.FlutterEngineCache
@@ -102,4 +108,68 @@ object FlutterBridgeManager : IBridgeApi {
             onFail = onFail
         )
     }
+
+    override fun getPrologueList(
+        onSuccess: (PrologueListResp) -> Unit,
+        onFail: (String) -> Unit
+    ) {
+        mFlutterMethodCaller.callMethod<PrologueListResp>(
+            FlutterMethod.GET_PROLOGUE_LIST.methodName,
+            modelClazz = PrologueListResp::class.java,
+            onSuccess = onSuccess,
+            onFail = onFail
+        )
+    }
+
+    override fun superReply(
+        req: SuperReplyReq,
+        onSuccess: (SuperReplyResp) -> Unit,
+        onFail: (String) -> Unit
+    ) {
+        mFlutterMethodCaller.callMethod<SuperReplyResp>(
+            FlutterMethod.SUPER_REPLY.methodName,
+            args = mapOf(
+                "keyboardId" to req.keyboardId,
+                "characterId" to req.characterId,
+                "content" to req.content,
+            ),
+            modelClazz = SuperReplyResp::class.java,
+            onSuccess = onSuccess,
+            onFail = onFail
+        )
+    }
+
+    override fun superSpeak(
+        req: SuperSpeakReq,
+        onSuccess: (SuperSpeakResp) -> Unit,
+        onFail: (String) -> Unit
+    ) {
+        mFlutterMethodCaller.callMethod<SuperSpeakResp>(
+            FlutterMethod.SUPER_SPEAK.methodName,
+            args = mapOf(
+                "keyboardId" to req.keyboardId,
+                "characterId" to req.characterId,
+                "content" to req.content,
+            ),
+            modelClazz = SuperSpeakResp::class.java,
+            onSuccess = onSuccess,
+            onFail = onFail
+        )
+    }
+
+    override fun prologue(
+        name: String,
+        onSuccess: (PrologueResp) -> Unit,
+        onFail: (String) -> Unit
+    ) {
+        mFlutterMethodCaller.callMethod<PrologueResp>(
+            FlutterMethod.PROLOGUE.methodName,
+            args = mapOf(
+                "name" to name,
+            ),
+            modelClazz = PrologueResp::class.java,
+            onSuccess = onSuccess,
+            onFail = onFail
+        )
+    }
 }

+ 5 - 64
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/IBridgeApi.kt

@@ -1,70 +1,11 @@
 package com.atmob.keyboard_android.util.bridge
 
-import com.atmob.keyboard_android.util.bridge.model.base.EmptyResp
-import com.atmob.keyboard_android.util.bridge.model.resp.CharacterListResp
-import com.atmob.keyboard_android.util.bridge.model.resp.CurrentKeyboardIdResp
-import com.atmob.keyboard_android.util.bridge.model.resp.KeyboardListResp
+import com.atmob.keyboard_android.util.bridge.api.AiChatApi
+import com.atmob.keyboard_android.util.bridge.api.KeyboardApi
+import com.atmob.keyboard_android.util.bridge.api.RouteJumpApi
+import com.atmob.keyboard_android.util.bridge.api.UserApi
 
 /**
  * 定义桥接交互API
  */
-interface IBridgeApi {
-    /**
-     * 用户是否已登录
-     */
-    fun isLogin(): Boolean
-
-    /**
-     * 用户是否为VIP
-     */
-    fun isVip(): Boolean
-
-    /**
-     * 跳转到定制人设页
-     */
-    fun jump2CustomCharacterPage()
-
-    /**
-     * 跳转到人设市场页
-     */
-    fun jump2CharacterMarketPage()
-
-    /**
-     * 跳转到VIP商店
-     */
-    fun jump2VipStore()
-
-    /**
-     * 获取键盘列表
-     */
-    fun getKeyboardList(
-        onSuccess: (resultObj: KeyboardListResp) -> Unit,
-        onFail: (msg: String) -> Unit
-    )
-
-    /**
-     * 选择键盘
-     */
-    fun selectedKeyboard(
-        keyboardId: String,
-        onSuccess: (resultObj: EmptyResp) -> Unit,
-        onFail: (msg: String) -> Unit
-    )
-
-    /**
-     * 获取当前键盘Id
-     */
-    fun getCurrentKeyboardId(
-        onSuccess: (CurrentKeyboardIdResp) -> Unit,
-        onFail: (msg: String) -> Unit
-    )
-
-    /**
-     * 获取人设列表
-     */
-    fun getCharacterList(
-        keyboardId: String,
-        onSuccess: (resultObj: CharacterListResp) -> Unit,
-        onFail: (msg: String) -> Unit
-    )
-}
+interface IBridgeApi : UserApi, RouteJumpApi, KeyboardApi, AiChatApi

+ 39 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/AiChatApi.kt

@@ -0,0 +1,39 @@
+package com.atmob.keyboard_android.util.bridge.api
+
+import com.atmob.keyboard_android.util.bridge.model.req.SuperReplyReq
+import com.atmob.keyboard_android.util.bridge.model.req.SuperSpeakReq
+import com.atmob.keyboard_android.util.bridge.model.resp.PrologueResp
+import com.atmob.keyboard_android.util.bridge.model.resp.SuperReplyResp
+import com.atmob.keyboard_android.util.bridge.model.resp.SuperSpeakResp
+
+/**
+ * Ai内容生成API
+ */
+interface AiChatApi {
+    /**
+     * 超会回
+     */
+    fun superReply(
+        req: SuperReplyReq,
+        onSuccess: (SuperReplyResp) -> Unit,
+        onFail: (String) -> Unit
+    )
+
+    /**
+     * 超会说
+     */
+    fun superSpeak(
+        req: SuperSpeakReq,
+        onSuccess: (SuperSpeakResp) -> Unit,
+        onFail: (String) -> Unit
+    )
+
+    /**
+     * 开场白
+     */
+    fun prologue(
+        name: String,
+        onSuccess: (PrologueResp) -> Unit,
+        onFail: (String) -> Unit
+    )
+}

+ 54 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/KeyboardApi.kt

@@ -0,0 +1,54 @@
+package com.atmob.keyboard_android.util.bridge.api
+
+import com.atmob.keyboard_android.util.bridge.model.base.EmptyResp
+import com.atmob.keyboard_android.util.bridge.model.resp.CharacterListResp
+import com.atmob.keyboard_android.util.bridge.model.resp.CurrentKeyboardIdResp
+import com.atmob.keyboard_android.util.bridge.model.resp.KeyboardListResp
+import com.atmob.keyboard_android.util.bridge.model.resp.PrologueListResp
+
+/**
+ * 键盘相关的API
+ */
+interface KeyboardApi {
+    /**
+     * 获取键盘列表
+     */
+    fun getKeyboardList(
+        onSuccess: (resultObj: KeyboardListResp) -> Unit,
+        onFail: (msg: String) -> Unit
+    )
+
+    /**
+     * 选择键盘
+     */
+    fun selectedKeyboard(
+        keyboardId: String,
+        onSuccess: (resultObj: EmptyResp) -> Unit,
+        onFail: (msg: String) -> Unit
+    )
+
+    /**
+     * 获取当前键盘Id
+     */
+    fun getCurrentKeyboardId(
+        onSuccess: (CurrentKeyboardIdResp) -> Unit,
+        onFail: (msg: String) -> Unit
+    )
+
+    /**
+     * 获取人设列表
+     */
+    fun getCharacterList(
+        keyboardId: String,
+        onSuccess: (resultObj: CharacterListResp) -> Unit,
+        onFail: (msg: String) -> Unit
+    )
+
+    /**
+     * 获取开场白列表
+     */
+    fun getPrologueList(
+        onSuccess: (resultObj: PrologueListResp) -> Unit,
+        onFail: (msg: String) -> Unit
+    )
+}

+ 21 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/RouteJumpApi.kt

@@ -0,0 +1,21 @@
+package com.atmob.keyboard_android.util.bridge.api
+
+/**
+ * 路由跳转API
+ */
+interface RouteJumpApi {
+    /**
+     * 跳转到定制人设页
+     */
+    fun jump2CustomCharacterPage()
+
+    /**
+     * 跳转到人设市场页
+     */
+    fun jump2CharacterMarketPage()
+
+    /**
+     * 跳转到VIP商店
+     */
+    fun jump2VipStore()
+}

+ 16 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/api/UserApi.kt

@@ -0,0 +1,16 @@
+package com.atmob.keyboard_android.util.bridge.api
+
+/**
+ * 用户相关的API
+ */
+interface UserApi {
+    /**
+     * 用户是否已登录
+     */
+    fun isLogin(): Boolean
+
+    /**
+     * 用户是否为VIP
+     */
+    fun isVip(): Boolean
+}

+ 21 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/req/SuperReplyReq.kt

@@ -0,0 +1,21 @@
+package com.atmob.keyboard_android.util.bridge.model.req
+
+import java.io.Serializable
+
+/**
+ * 超会回的请求
+ */
+data class SuperReplyReq(
+    /**
+     * 键盘id
+     */
+    val keyboardId: String,
+    /**
+     * 人设id
+     */
+    val characterId: String,
+    /**
+     * 内容
+     */
+    val content: String
+) : Serializable

+ 21 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/req/SuperSpeakReq.kt

@@ -0,0 +1,21 @@
+package com.atmob.keyboard_android.util.bridge.model.req
+
+import java.io.Serializable
+
+/**
+ * 超会说的请求体
+ */
+data class SuperSpeakReq(
+    /**
+     * 键盘id
+     */
+    val keyboardId: String,
+    /**
+     * 人设id
+     */
+    val characterId: String,
+    /**
+     * 内容
+     */
+    val content: String
+) : Serializable

+ 34 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/resp/PrologueListResp.kt

@@ -0,0 +1,34 @@
+package com.atmob.keyboard_android.util.bridge.model.resp
+
+import java.io.Serializable
+
+/**
+ * 获取开场白列表的响应体
+ */
+data class PrologueListResp(
+    /**
+     * 开场白列表
+     */
+    val prologues: List<PrologueListItem>
+) : Serializable {
+    data class PrologueListItem(
+        /**
+         * 分组标题
+         */
+        val title: String,
+        /**
+         * 话题列表
+         */
+        val topics: List<Topic>,
+    ) : Serializable
+
+    /**
+     * 话题实体类
+     */
+    data class Topic(
+        /**
+         * 话题名称
+         */
+        val name: String
+    ) : Serializable
+}

+ 10 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/resp/PrologueResp.kt

@@ -0,0 +1,10 @@
+package com.atmob.keyboard_android.util.bridge.model.resp
+
+import java.io.Serializable
+
+/**
+ * 开场白的响应体
+ */
+data class PrologueResp(
+    val list: List<String>
+) : Serializable

+ 11 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/resp/SuperReplyResp.kt

@@ -0,0 +1,11 @@
+package com.atmob.keyboard_android.util.bridge.model.resp
+
+/**
+ * 超会回的响应体
+ */
+data class SuperReplyResp(
+    /**
+     * Ai生成的内容
+     */
+    val content: String
+)

+ 10 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/bridge/model/resp/SuperSpeakResp.kt

@@ -0,0 +1,10 @@
+package com.atmob.keyboard_android.util.bridge.model.resp
+
+import java.io.Serializable
+
+/**
+ * 超会说的响应体
+ */
+data class SuperSpeakResp(
+    val list: List<String>
+) : Serializable