Procházet zdrojové kódy

[feat]键盘插件,键盘按键功能,必须登录后,才能使用

hezihao před 8 měsíci
rodič
revize
7818a7e209

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

@@ -9,6 +9,7 @@ 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.ComponentMediator
 import com.atmob.keyboard_android.component.base.BaseUIComponent
 import com.atmob.keyboard_android.component.base.FakeComponent
 import com.atmob.keyboard_android.component.base.RouteComponent
@@ -17,6 +18,7 @@ import com.atmob.keyboard_android.component.child.IAiKeyboardCommonPanelComponen
 import com.atmob.keyboard_android.component.child.impl.ai.SuperSpeakAiChatComponent
 import com.atmob.keyboard_android.component.item.AddCharacterViewBinder
 import com.atmob.keyboard_android.component.item.AiKeyboardKeyViewBinder
+import com.atmob.keyboard_android.component.root.IKeyboardRootComponent
 import com.atmob.keyboard_android.constant.Constants
 import com.atmob.keyboard_android.enums.HelpMode
 import com.atmob.keyboard_android.ext.click
@@ -114,29 +116,38 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
             mKeyListAdapter = MultiTypeAdapter(mKeyListItems).apply {
                 // 键盘按键条目
                 register(AiKeyboardKeyModel::class.java, AiKeyboardKeyViewBinder { itemView, item ->
-                    // 当前点击的条目,正在加载中,忽略点击
-                    if (item.isLoading) {
-                        return@AiKeyboardKeyViewBinder
-                    }
-                    // 其他条目正在加载中,忽略点击
-                    val hasItemLoading =
-                        mKeyListItems.filterIsInstance<AiKeyboardKeyModel>().filter {
-                            it.isLoading
-                        }.toList().isNotEmpty()
-                    if (hasItemLoading) {
-                        return@AiKeyboardKeyViewBinder
-                    }
-                    // 点击键盘按键,打开AI生成内容面板
-                    if (item.isVip) {
-                        // 检查是否VIP
-                        UserInfoHelper.checkVip {
-                            handleItemClickLogic(item)
-                            LogUtil.d("Ai键盘,已经是VIP,打开Ai内容面板")
+                    UserInfoHelper.isLogin { isLogin ->
+                        if (!isLogin) {
+                            // 未登录,跳到登录页
+                            val keyboardRootComponent =
+                                ComponentMediator.findComponent(IKeyboardRootComponent::class.java)
+                            keyboardRootComponent?.switchLoginPage()
+                        } else {
+                            // 当前点击的条目,正在加载中,忽略点击
+                            if (item.isLoading) {
+                                return@isLogin
+                            }
+                            // 其他条目正在加载中,忽略点击
+                            val hasItemLoading =
+                                mKeyListItems.filterIsInstance<AiKeyboardKeyModel>().filter {
+                                    it.isLoading
+                                }.toList().isNotEmpty()
+                            if (hasItemLoading) {
+                                return@isLogin
+                            }
+                            // 点击键盘按键,打开AI生成内容面板
+                            if (item.isVip) {
+                                // 检查是否VIP
+                                UserInfoHelper.checkVip {
+                                    handleItemClickLogic(item)
+                                    LogUtil.d("Ai键盘,已经是VIP,打开Ai内容面板")
+                                }
+                            } else {
+                                // 不需要VIP,直接打开
+                                handleItemClickLogic(item)
+                                LogUtil.d("Ai键盘,不需要VIP,直接进行下一步")
+                            }
                         }
-                    } else {
-                        // 不需要VIP,直接打开
-                        handleItemClickLogic(item)
-                        LogUtil.d("Ai键盘,不需要VIP,直接进行下一步")
                     }
                 })
                 // 添加人设按键

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

@@ -7,6 +7,7 @@ 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.ComponentMediator
 import com.atmob.keyboard_android.component.base.BaseUIComponent
 import com.atmob.keyboard_android.component.base.FakeComponent
 import com.atmob.keyboard_android.component.base.RouteComponent
@@ -14,6 +15,7 @@ import com.atmob.keyboard_android.component.child.IAiChatComponent
 import com.atmob.keyboard_android.component.child.IAiKeyboardProloguePanelComponent
 import com.atmob.keyboard_android.component.child.impl.ai.PrologueAiChatComponent
 import com.atmob.keyboard_android.component.item.AiKeyboardKeyViewBinder
+import com.atmob.keyboard_android.component.root.IKeyboardRootComponent
 import com.atmob.keyboard_android.constant.Constants
 import com.atmob.keyboard_android.enums.HelpMode
 import com.atmob.keyboard_android.ext.click
@@ -177,17 +179,26 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
             mKeyListItems = Items()
             mKeyListAdapter = MultiTypeAdapter(mKeyListItems).apply {
                 register(AiKeyboardKeyModel::class.java, AiKeyboardKeyViewBinder { itemView, item ->
-                    // 点击键盘按键,打开AI生成内容面板
-                    if (item.isVip) {
-                        // 检查是否VIP
-                        UserInfoHelper.checkVip {
-                            handleItemClickLogic(item)
-                            LogUtil.d("Ai键盘,已经是VIP,打开Ai内容面板")
+                    UserInfoHelper.isLogin { isLogin ->
+                        if (!isLogin) {
+                            // 未登录,跳到登录页
+                            val keyboardRootComponent =
+                                ComponentMediator.findComponent(IKeyboardRootComponent::class.java)
+                            keyboardRootComponent?.switchLoginPage()
+                        } else {
+                            // 点击键盘按键,打开AI生成内容面板
+                            if (item.isVip) {
+                                // 检查是否VIP
+                                UserInfoHelper.checkVip {
+                                    handleItemClickLogic(item)
+                                    LogUtil.d("Ai键盘,已经是VIP,打开Ai内容面板")
+                                }
+                            } else {
+                                // 不需要VIP,直接打开
+                                handleItemClickLogic(item)
+                                LogUtil.d("Ai键盘,不需要VIP,直接进行下一步")
+                            }
                         }
-                    } else {
-                        // 不需要VIP,直接打开
-                        handleItemClickLogic(item)
-                        LogUtil.d("Ai键盘,不需要VIP,直接进行下一步")
                     }
                 })
             }