|
@@ -98,6 +98,10 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
|
|
|
mKeyListAdapter = MultiTypeAdapter(mKeyListItems).apply {
|
|
mKeyListAdapter = MultiTypeAdapter(mKeyListItems).apply {
|
|
|
// 键盘按键条目
|
|
// 键盘按键条目
|
|
|
register(AiKeyboardKeyModel::class.java, AiKeyboardKeyViewBinder {
|
|
register(AiKeyboardKeyModel::class.java, AiKeyboardKeyViewBinder {
|
|
|
|
|
+ // 正在加载中,忽略点击
|
|
|
|
|
+ if (it.isLoading) {
|
|
|
|
|
+ return@AiKeyboardKeyViewBinder
|
|
|
|
|
+ }
|
|
|
// 点击键盘按键,打开AI生成内容面板
|
|
// 点击键盘按键,打开AI生成内容面板
|
|
|
if (it.isVip) {
|
|
if (it.isVip) {
|
|
|
// 检查是否VIP
|
|
// 检查是否VIP
|
|
@@ -252,6 +256,7 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
|
|
|
/**
|
|
/**
|
|
|
* 加载按键列表
|
|
* 加载按键列表
|
|
|
*/
|
|
*/
|
|
|
|
|
+ @SuppressLint("NotifyDataSetChanged")
|
|
|
private fun loadKeyList() {
|
|
private fun loadKeyList() {
|
|
|
KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
|
?.getCharacterList(onSuccess = {
|
|
?.getCharacterList(onSuccess = {
|
|
@@ -291,8 +296,13 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 处理条目点击逻辑
|
|
* 处理条目点击逻辑
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param item 当前点击的条目的数据
|
|
|
*/
|
|
*/
|
|
|
- private fun handleItemClickLogic(item: AiKeyboardKeyModel) {
|
|
|
|
|
|
|
+ @SuppressLint("NotifyDataSetChanged")
|
|
|
|
|
+ private fun handleItemClickLogic(
|
|
|
|
|
+ item: AiKeyboardKeyModel
|
|
|
|
|
+ ) {
|
|
|
// 判断帮助模式
|
|
// 判断帮助模式
|
|
|
val helpMode = KeyboardHolder.getKeyboardService()
|
|
val helpMode = KeyboardHolder.getKeyboardService()
|
|
|
?.getKeyboardViewModel()?.helpMode?.value
|
|
?.getKeyboardViewModel()?.helpMode?.value
|
|
@@ -301,7 +311,7 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 保存当前点击项的数据
|
|
// 保存当前点击项的数据
|
|
|
- mCurrentClickItem = item
|
|
|
|
|
|
|
+ this.mCurrentClickItem = item
|
|
|
|
|
|
|
|
LogUtil.d("当前帮助模式 => $helpMode")
|
|
LogUtil.d("当前帮助模式 => $helpMode")
|
|
|
|
|
|
|
@@ -316,7 +326,15 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
|
|
|
|
|
|
|
|
if (HelpMode.HELP_CHAT == helpMode) {
|
|
if (HelpMode.HELP_CHAT == helpMode) {
|
|
|
// 帮聊只会生成一条内容,直接添加到输入框
|
|
// 帮聊只会生成一条内容,直接添加到输入框
|
|
|
- doChatSuperReply(item.payload)
|
|
|
|
|
|
|
+ doChatSuperReply(item.payload, startCallback = {
|
|
|
|
|
+ // 生成开始,显示Loading
|
|
|
|
|
+ item.isLoading = true
|
|
|
|
|
+ mKeyListAdapter.notifyDataSetChanged()
|
|
|
|
|
+ }, finishCallback = {
|
|
|
|
|
+ // 生成结束,关闭Loading
|
|
|
|
|
+ item.isLoading = false
|
|
|
|
|
+ mKeyListAdapter.notifyDataSetChanged()
|
|
|
|
|
+ })
|
|
|
} else {
|
|
} else {
|
|
|
// 教你说和开场白,有多条数据,需要添加到列表中展示
|
|
// 教你说和开场白,有多条数据,需要添加到列表中展示
|
|
|
if (HelpMode.TEACH_YOU_SAY == helpMode) {
|
|
if (HelpMode.TEACH_YOU_SAY == helpMode) {
|
|
@@ -334,20 +352,31 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
|
|
|
*
|
|
*
|
|
|
* @param characterId 人设Id
|
|
* @param characterId 人设Id
|
|
|
*/
|
|
*/
|
|
|
- private fun doChatSuperReply(characterId: String) {
|
|
|
|
|
|
|
+ private fun doChatSuperReply(
|
|
|
|
|
+ characterId: String,
|
|
|
|
|
+ startCallback: (() -> Unit)? = null,
|
|
|
|
|
+ finishCallback: (() -> Unit)? = null
|
|
|
|
|
+ ) {
|
|
|
val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
|
|
|
+ startCallback?.invoke()
|
|
|
|
|
+ // 获取数据
|
|
|
viewModel?.chatSuperReply(characterId, onSuccess = {
|
|
viewModel?.chatSuperReply(characterId, onSuccess = {
|
|
|
|
|
+ // 获取成功
|
|
|
|
|
+ finishCallback?.invoke()
|
|
|
}, onFail = {
|
|
}, onFail = {
|
|
|
|
|
+ // 获取失败
|
|
|
ToastUtils.showShort(it)
|
|
ToastUtils.showShort(it)
|
|
|
|
|
+ finishCallback?.invoke()
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 生成<教你说>的内容
|
|
* 生成<教你说>的内容
|
|
|
*/
|
|
*/
|
|
|
- private fun doChatSuperSpeak(characterId: String) {
|
|
|
|
|
|
|
+ private fun doChatSuperSpeak(characterId: String, finishCallback: (() -> Unit)? = null) {
|
|
|
val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
|
viewModel?.chatSuperSpeak(characterId, onSuccess = {
|
|
viewModel?.chatSuperSpeak(characterId, onSuccess = {
|
|
|
|
|
+ finishCallback?.invoke()
|
|
|
}, onFail = {
|
|
}, onFail = {
|
|
|
ToastUtils.showShort(it)
|
|
ToastUtils.showShort(it)
|
|
|
})
|
|
})
|
|
@@ -356,9 +385,10 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
|
|
|
/**
|
|
/**
|
|
|
* 生成<开场白>的内容
|
|
* 生成<开场白>的内容
|
|
|
*/
|
|
*/
|
|
|
- private fun doChatPrologue(name: String) {
|
|
|
|
|
|
|
+ private fun doChatPrologue(name: String, finishCallback: (() -> Unit)? = null) {
|
|
|
val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
val viewModel = KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()
|
|
|
viewModel?.chatPrologue(name, onSuccess = {
|
|
viewModel?.chatPrologue(name, onSuccess = {
|
|
|
|
|
+ finishCallback?.invoke()
|
|
|
}, onFail = {
|
|
}, onFail = {
|
|
|
ToastUtils.showShort(it)
|
|
ToastUtils.showShort(it)
|
|
|
})
|
|
})
|