diff --git a/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt b/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt index bd9cf81..adf288b 100644 --- a/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt +++ b/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt @@ -210,8 +210,8 @@ object AsrHelper : OfflineCmdListener { onSuccess = { action -> when (action.name) { "goToDecisionCenter" -> onGoToDecisionCenter?.invoke(action) - "goToTaskCenter","openTaskDetailWithFilter" -> onGoToTaskCenter?.invoke(action) - "openTaskDetail" -> onOpenTaskDetail?.invoke(action) + "goToTaskCenter" -> onGoToTaskCenter?.invoke(action) + "openTaskDetail", "openTaskDetailWithFilter" -> onOpenTaskDetail?.invoke(action) else -> Log.d(TAG, "unhandled action: $action") } }, @@ -293,4 +293,4 @@ object AsrHelper : OfflineCmdListener { isTtsConnected = false Log.d(TAG, "AsrHelper closed") } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nova/brain/glass/helper/IntentRecognizeHelper.kt b/app/src/main/java/com/nova/brain/glass/helper/IntentRecognizeHelper.kt index d06b2ea..dc9d83e 100644 --- a/app/src/main/java/com/nova/brain/glass/helper/IntentRecognizeHelper.kt +++ b/app/src/main/java/com/nova/brain/glass/helper/IntentRecognizeHelper.kt @@ -6,6 +6,7 @@ import com.nova.brain.glass.helper.IntentRecognizeHelper.recognize import com.nova.brain.glass.model.RecognizeAction import com.nova.brain.glass.model.data.RecognizeData import com.nova.brain.glass.repository.Service +import com.xuqm.base.common.LogHelper import com.xuqm.base.di.manager.HttpManager import com.xuqm.base.extensions.showMessage import io.reactivex.android.schedulers.AndroidSchedulers @@ -40,8 +41,10 @@ object IntentRecognizeHelper { onComplete: () -> Unit = {} ) { disposable?.dispose() + val request = RecognizeData(text = text, scence = scence, extra = extra, actions = actions) + LogHelper.d("IntentRecognize request: $request") disposable = HttpManager.getApi(MyApplication.appComponent1, Service::class.java) - .recognize(RecognizeData(text = text, scence = scence, extra = extra, actions = actions)) + .recognize(request) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ model -> @@ -61,4 +64,4 @@ object IntentRecognizeHelper { disposable?.dispose() disposable = null } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt index 0eff66b..d309125 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt @@ -10,6 +10,7 @@ import com.nova.brain.glass.databinding.ActivityTaskListBinding import com.nova.brain.glass.helper.AsrHelper import com.nova.brain.glass.helper.OfflineCmdListener import com.nova.brain.glass.helper.OfflineCmdServiceHelper +import com.nova.brain.glass.model.RecognizeAction import com.nova.brain.glass.model.TaskItem import com.nova.brain.glass.model.data.TaskExtraItem import com.nova.brain.glass.model.data.TaskListData @@ -164,19 +165,23 @@ class TaskListActivity : OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener) AsrHelper.scene = "list" AsrHelper.extraProvider = { - if (visibleTaskExtras.isNotEmpty()) visibleTaskExtras else buildTaskExtra(viewModel.currentItems) + visibleTaskExtras.ifEmpty { buildTaskExtra(viewModel.currentItems) } } AsrHelper.onGoToDecisionCenter = { action -> Log.d("TaskListActivity", "recognize result: $action") } AsrHelper.onOpenTaskDetail = { action -> - val taskId = action.params.taskId - val item = if (taskId.isNullOrEmpty()) { - viewModel.currentItems.firstOrNull() + if (action.name == "openTaskDetailWithFilter") { + applyFilterAndRefresh(action) } else { - viewModel.currentItems.firstOrNull { it.id == taskId } + val taskId = action.params.taskId + val item = if (taskId.isNullOrEmpty()) { + viewModel.currentItems.firstOrNull() + } else { + viewModel.currentItems.firstOrNull { it.id == taskId } + } + item?.let { routeToTask(it) } } - item?.let { routeToTask(it) } } } @@ -226,6 +231,21 @@ class TaskListActivity : private fun Map.firstNotBlank(vararg keys: String): String = keys.firstNotNullOfOrNull { key -> this[key]?.takeIf { it.isNotBlank() } }.orEmpty() + private fun applyFilterAndRefresh(action: RecognizeAction) { + viewModel.searchParams = TaskListData( + taskType = action.params.taskType ?: "", + keyword = action.params.keyword ?: "", + dateRange = action.params.dateRange, + dateType = action.params.dateTpye ?: 0, + isOverdue = action.params.isOverdue ?: 2, + tenantId = action.params.tenantId ?: 1, + userId = action.params.userId ?: "" + ) + pageStartPosition = 0 + binding.baseRecyclerView.scrollToPosition(0) + viewModel.invalidate() + } + private val adapter = object : CommonPagedAdapter(R.layout.item_task_list) { override fun convert(holder: ViewHolder, item: TaskItem, position: Int) { val displayPosition = (position - pageStartPosition + 1).coerceAtLeast(1) diff --git a/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt b/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt index 7c809ae..a0210f2 100644 --- a/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt +++ b/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt @@ -24,8 +24,7 @@ class TaskListVM : BaseListViewModel() { override fun loadData(page: Int, onResponse: Response) { add( HttpManager.getApi(Service::class.java) - .glassesTaskSearch(TaskListData(taskType = "", keyword = "", dateRange = 15, dateType = 0, isOverdue = 2, userId = "rokid", tenantId = 1)) -// .glassesTaskSearch(searchParams) + .glassesTaskSearch(searchParams) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ response ->