|
|
@@ -15,8 +15,6 @@ import com.atmob.keyboard_android.component.item.AiGenerateLoadingViewBinder
|
|
|
import com.atmob.keyboard_android.component.item.EmptyPlaceholderViewBinder
|
|
|
import com.atmob.keyboard_android.constant.Constants
|
|
|
import com.atmob.keyboard_android.ext.click
|
|
|
-import com.atmob.keyboard_android.ext.setGone
|
|
|
-import com.atmob.keyboard_android.ext.setVisible
|
|
|
import com.atmob.keyboard_android.model.AiChatModel
|
|
|
import com.atmob.keyboard_android.model.AiGenerateLoadingModel
|
|
|
import com.atmob.keyboard_android.model.EmptyPlaceholderModel
|
|
|
@@ -28,13 +26,13 @@ import me.drakeet.multitype.Items
|
|
|
import me.drakeet.multitype.MultiTypeAdapter
|
|
|
|
|
|
/**
|
|
|
- * Ai对话组件
|
|
|
+ * Ai对话组件,基类,子类有教你说和开场白
|
|
|
*/
|
|
|
-class AiChatComponent @JvmOverloads constructor(
|
|
|
+abstract class AiChatComponent<T : IAiChatComponent> @JvmOverloads constructor(
|
|
|
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
|
|
-) : BaseUIComponent<IAiChatComponent>(context, attrs, defStyleAttr), IAiChatComponent {
|
|
|
+) : BaseUIComponent<T>(context, attrs, defStyleAttr) {
|
|
|
private lateinit var vBackBtn: View
|
|
|
- private lateinit var vReGenerateBtn: View
|
|
|
+ protected lateinit var vReGenerateBtn: View
|
|
|
private lateinit var vChatList: RecyclerView
|
|
|
|
|
|
private lateinit var mListItems: Items
|
|
|
@@ -99,10 +97,6 @@ class AiChatComponent @JvmOverloads constructor(
|
|
|
setupViewModel()
|
|
|
}
|
|
|
|
|
|
- override fun getComponentInterfaceClazz(): Class<IAiChatComponent> {
|
|
|
- return IAiChatComponent::class.java
|
|
|
- }
|
|
|
-
|
|
|
override fun getComponentAnimator(): Class<*> {
|
|
|
return if (Constants.COMPONENT_ANIMATOR_ENABLE) {
|
|
|
TransitionAnimator::class.java
|
|
|
@@ -112,39 +106,15 @@ class AiChatComponent @JvmOverloads constructor(
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 配置ViewModel
|
|
|
+ * 配置ViewModel,子类重写
|
|
|
*/
|
|
|
- private fun setupViewModel() {
|
|
|
- // 监听Ai生成列表的更新
|
|
|
- KeyboardHolder.getKeyboardService()?.run {
|
|
|
- getKeyboardViewModel().aiChatListResult.observe(getLifecycleOwner()) {
|
|
|
- if (it.isEmpty()) {
|
|
|
- vReGenerateBtn.setGone()
|
|
|
- } else {
|
|
|
- vReGenerateBtn.setVisible()
|
|
|
- }
|
|
|
- loadAiList(it)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- override fun onComponentShow() {
|
|
|
- super.onComponentShow()
|
|
|
- KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
|
- ?.updateAiChatPageShowing(true)
|
|
|
- }
|
|
|
-
|
|
|
- override fun onComponentHide() {
|
|
|
- super.onComponentHide()
|
|
|
- KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
|
- ?.updateAiChatPageShowing(false)
|
|
|
- }
|
|
|
+ protected abstract fun setupViewModel()
|
|
|
|
|
|
/**
|
|
|
* 加载Ai内容列表
|
|
|
*/
|
|
|
@SuppressLint("NotifyDataSetChanged")
|
|
|
- private fun loadAiList(list: List<String>) {
|
|
|
+ protected fun loadAiList(list: List<String>) {
|
|
|
mListItems.clear()
|
|
|
mListItems.apply {
|
|
|
// 空占位条目
|