Explorar o código

Better feedback for task deletion

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk hai 1 ano
pai
achega
cbe3b8e58e

+ 26 - 6
app/src/main/java/com/nextcloud/client/assistant/AsssistantScreen.kt

@@ -42,6 +42,7 @@ import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.input.nestedscroll.nestedScroll
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.res.stringResource
@@ -51,6 +52,7 @@ import com.nextcloud.client.assistant.component.AddTaskAlertDialog
 import com.nextcloud.client.assistant.component.CenterText
 import com.nextcloud.client.assistant.component.TaskTypesRow
 import com.nextcloud.client.assistant.component.TaskView
+import com.nextcloud.ui.composeComponents.alertDialog.SimpleAlertDialog
 import com.owncloud.android.R
 import com.owncloud.android.lib.resources.assistant.model.Task
 import com.owncloud.android.lib.resources.assistant.model.TaskType
@@ -70,10 +72,11 @@ fun AssistantScreen(viewModel: AssistantViewModel, floatingActionButton: Floatin
     val isTaskCreated by viewModel.isTaskCreated.collectAsState()
     val isTaskDeleted by viewModel.isTaskDeleted.collectAsState()
     val taskTypes by viewModel.taskTypes.collectAsState()
-    var showAddTaskAlertDialog by remember {
-        mutableStateOf(false)
+    var showAddTaskAlertDialog by remember { mutableStateOf(false) }
+    var showDeleteTaskAlertDialog by remember { mutableStateOf(false) }
+    var taskIdToDeleted: Long? by remember {
+        mutableStateOf(null)
     }
-
     val pullRefreshState = rememberPullToRefreshState()
 
     if (pullRefreshState.isRefreshing) {
@@ -95,7 +98,10 @@ fun AssistantScreen(viewModel: AssistantViewModel, floatingActionButton: Floatin
         } else {
             val tasks = taskList?.resultData?.tasks ?: return
             val types = taskTypes?.resultData?.types ?: return
-            AssistantContent(tasks, types, selectedTaskType, viewModel)
+            AssistantContent(tasks, types, selectedTaskType, viewModel, showDeleteTaskAlertDialog = { taskId ->
+                taskIdToDeleted = taskId
+                showDeleteTaskAlertDialog = true
+            })
         }
 
         if (pullRefreshState.isRefreshing) {
@@ -119,6 +125,19 @@ fun AssistantScreen(viewModel: AssistantViewModel, floatingActionButton: Floatin
         )
     }
 
+    if (showDeleteTaskAlertDialog) {
+        taskIdToDeleted?.let { id ->
+            SimpleAlertDialog(
+                backgroundColor = Color.White,
+                textColor = Color.Black,
+                title =stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_title),
+                description = stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_description),
+                dismiss = {showDeleteTaskAlertDialog = false },
+                onComplete = { viewModel.deleteTask(id) },
+            )
+        }
+    }
+
     if (showAddTaskAlertDialog) {
         selectedTaskType?.let {
             AddTaskAlertDialog(viewModel, it) {
@@ -135,6 +154,7 @@ private fun AssistantContent(
     taskTypes: List<TaskType>,
     selectedTask: TaskType?,
     viewModel: AssistantViewModel,
+    showDeleteTaskAlertDialog: (Long) -> Unit,
 ) {
     LazyColumn(
         modifier = Modifier
@@ -149,11 +169,11 @@ private fun AssistantContent(
             Spacer(modifier = Modifier.height(8.dp))
         }
 
-        items(taskList) {
+        items(taskList) { task ->
             if (taskList.isEmpty()) {
                 CenterText(text = stringResource(id = R.string.assistant_screen_no_task_available_text))
             } else {
-                TaskView(task = it, deleteTask = { viewModel.deleteTask(it.id) } )
+                TaskView(task, showDeleteTaskAlertDialog = { showDeleteTaskAlertDialog(task.id) })
                 Spacer(modifier = Modifier.height(8.dp))
             }
         }

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

@@ -55,7 +55,7 @@ import com.owncloud.android.lib.resources.assistant.model.Task
 @Composable
 fun TaskView(
     task: Task,
-    deleteTask: () -> Unit,
+    showDeleteTaskAlertDialog: (Long) -> Unit,
 ) {
     var expanded by remember { mutableStateOf(false) }
     var showMoreActionsBottomSheet by remember { mutableStateOf(false) }
@@ -130,7 +130,7 @@ fun TaskView(
                     R.drawable.ic_delete,
                     R.string.assistant_screen_task_more_actions_bottom_sheet_delete_action
                 ) {
-                    deleteTask()
+                    showDeleteTaskAlertDialog(task.id)
                 },
             )
 

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

@@ -20,6 +20,8 @@
 
     <string name="assistant_screen_loading">Task List are loading, please wait</string>
     <string name="assistant_screen_no_task_available_text">No task available, you can create a new task from bottom right.</string>
+    <string name="assistant_screen_delete_task_alert_dialog_title">Delete Task</string>
+    <string name="assistant_screen_delete_task_alert_dialog_description">Are you sure you want to delete this task?</string>
 
     <string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Delete Task</string>