浏览代码

Handle Nullable responses

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 年之前
父节点
当前提交
642f858bb2

+ 3 - 3
app/src/main/java/com/nextcloud/client/assistant/AssistantViewModel.kt

@@ -54,8 +54,8 @@ class AssistantViewModel(client: NextcloudClient) : ViewModel() {
     private val _isTaskCreated = MutableStateFlow(false)
     val isTaskCreated: StateFlow<Boolean> = _isTaskCreated
 
-    private val _isTaskDeleted = MutableStateFlow(false)
-    val isTaskDeleted: StateFlow<Boolean> = _isTaskDeleted
+    private val _isTaskDeleted = MutableStateFlow<Boolean?>(null)
+    val isTaskDeleted: StateFlow<Boolean?> = _isTaskDeleted
 
     init {
         getTaskTypes()
@@ -90,7 +90,7 @@ class AssistantViewModel(client: NextcloudClient) : ViewModel() {
             }
 
             _selectedTaskType.update {
-                result.resultData.types.first()
+                result.resultData.types?.first()
             }
         }
     }

+ 9 - 2
app/src/main/java/com/nextcloud/client/assistant/AsssistantScreen.kt

@@ -98,6 +98,7 @@ fun AssistantScreen(viewModel: AssistantViewModel, floatingActionButton: Floatin
         } else {
             val tasks = taskList?.resultData?.tasks ?: return
             val types = taskTypes?.resultData?.types ?: return
+
             AssistantContent(tasks, types, selectedTaskType, viewModel, showDeleteTaskAlertDialog = { taskId ->
                 taskIdToDeleted = taskId
                 showDeleteTaskAlertDialog = true
@@ -118,10 +119,16 @@ fun AssistantScreen(viewModel: AssistantViewModel, floatingActionButton: Floatin
         )
     }
 
-    if (isTaskDeleted) {
+    isTaskDeleted?.let {
+        val messageId = if (it) {
+            R.string.assistant_screen_task_delete_success_message
+        } else {
+            R.string.assistant_screen_task_delete_success_message
+        }
+
         DisplayUtils.showSnackMessage(
             activity,
-            stringResource(id = R.string.assistant_screen_task_delete_success_message)
+            stringResource(id = messageId)
         )
     }
 

+ 6 - 2
app/src/main/java/com/nextcloud/client/assistant/component/AddTaskAlertDialog.kt

@@ -46,10 +46,14 @@ fun AddTaskAlertDialog(viewModel: AssistantViewModel, taskType: TaskType, dismis
     SimpleAlertDialog(
         backgroundColor = Color.White,
         textColor = Color.Black,
-        title = taskType.name,
+        title = taskType.name ?: "",
         description = taskType.description,
         dismiss = { dismiss() },
-        onComplete = { viewModel.createTask(input = input, type = taskType.id) },
+        onComplete = {
+            taskType.id?.let {
+                viewModel.createTask(input = input, type = it)
+            }
+        },
         content = {
             TextField(
                 placeholder = {

+ 16 - 14
app/src/main/java/com/nextcloud/client/assistant/component/TaskTypesRow.kt

@@ -43,21 +43,23 @@ fun TaskTypesRow(selectedTaskType: TaskType?, data: List<TaskType>?, selectTaskT
             .fillMaxWidth()
             .horizontalScroll(rememberScrollState())
     ) {
-        data?.forEach {
-            FilledTonalButton(
-                onClick = { selectTaskType(it) },
-                colors = ButtonDefaults.buttonColors(
-                    containerColor = if (selectedTaskType?.id == it.id) {
-                        Color.Unspecified
-                    } else {
-                        Color.Gray
-                    }
-                )
-            ) {
-                Text(text = it.name)
-            }
+        data?.forEach { taskType ->
+            taskType.name?.let { taskTypeName ->
+                FilledTonalButton(
+                    onClick = { selectTaskType(taskType) },
+                    colors = ButtonDefaults.buttonColors(
+                        containerColor = if (selectedTaskType?.id == taskType.id) {
+                            Color.Unspecified
+                        } else {
+                            Color.Gray
+                        }
+                    )
+                ) {
+                    Text(text = taskTypeName)
+                }
 
-            Spacer(modifier = Modifier.padding(end = 8.dp))
+                Spacer(modifier = Modifier.padding(end = 8.dp))
+            }
         }
     }
 }

+ 21 - 17
app/src/main/java/com/nextcloud/client/assistant/component/TaskView.kt

@@ -81,11 +81,13 @@ fun TaskView(
             color = Color.White
         )
 
-        Text(
-            text = task.input,
-            modifier = Modifier.padding(4.dp),
-            color = Color.White
-        )
+        task.input?.let {
+            Text(
+                text = it,
+                modifier = Modifier.padding(4.dp),
+                color = Color.White
+            )
+        }
 
         Spacer(modifier = Modifier.height(16.dp))
 
@@ -96,20 +98,22 @@ fun TaskView(
                 .padding(4.dp)
         )
 
-        Text(
-            text = if (expanded) task.output else task.output.take(100) + "...",
-            color = Color.White,
-            modifier = Modifier
-                .animateContentSize(
-                    animationSpec = spring(
-                        dampingRatio = Spring.DampingRatioLowBouncy,
-                        stiffness = Spring.StiffnessLow
+        task.output?.let {
+            Text(
+                text = if (expanded) it else it.take(100) + "...",
+                color = Color.White,
+                modifier = Modifier
+                    .animateContentSize(
+                        animationSpec = spring(
+                            dampingRatio = Spring.DampingRatioLowBouncy,
+                            stiffness = Spring.StiffnessLow
+                        )
                     )
-                )
-                .padding(4.dp)
-        )
+                    .padding(4.dp)
+            )
+        }
 
-        if (task.output.length >= 100) {
+        if ((task.output?.length ?: 0) >= 100) {
             Text(
                 text = if (!expanded) {
                     stringResource(id = R.string.assistant_screen_task_view_show_more)

+ 2 - 1
app/src/main/res/values/strings.xml

@@ -26,7 +26,8 @@
     <string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Delete Task</string>
 
     <string name="assistant_screen_task_create_success_message">Task successfully created</string>
-    <string name="assistant_screen_task_delete_success_message">Task deleted</string>
+    <string name="assistant_screen_task_delete_success_message">An error occurred while deleting the task</string>
+    <string name="assistant_screen_task_delete_fail_message">TS</string>
     <string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Type some text</string>
 
     <string name="assistant_screen_task_view_input">Input: </string>