Browse Source

Add CreateTaskRemoteOperation

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 year ago
parent
commit
ab78bd8c20

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

@@ -40,11 +40,8 @@ class AssistantViewModel(client: NextcloudClient) : ViewModel() {
     private val _taskTypes = MutableStateFlow<RemoteOperationResult<TaskTypes>?>(null)
     val taskTypes: StateFlow<RemoteOperationResult<TaskTypes>?> = _taskTypes
 
-    /*
-     private val _task = MutableStateFlow<CreatedTask?>(null)
-    val task: StateFlow<CreatedTask?> = _task
-     */
-
+    private val _isTaskCreated = MutableStateFlow(false)
+    val isTaskCreated: StateFlow<Boolean> = _isTaskCreated
 
     init {
         viewModelScope.launch(Dispatchers.IO) {
@@ -55,6 +52,19 @@ class AssistantViewModel(client: NextcloudClient) : ViewModel() {
         }
     }
 
+    fun createTask(
+        input: String,
+        type: String,
+    ) {
+        viewModelScope.launch(Dispatchers.IO) {
+            val result = repository.createTask(input, type)
+
+            _isTaskCreated.update {
+                result.isSuccess
+            }
+        }
+    }
+
     /*
     fun deleteTask(id: String) {
         viewModelScope.launch(Dispatchers.IO) {
@@ -70,21 +80,7 @@ class AssistantViewModel(client: NextcloudClient) : ViewModel() {
         }
     }
 
-    fun createTask(
-        input: String,
-        type: String,
-    ) {
-        viewModelScope.launch(Dispatchers.IO) {
-            repository?.createTask(input, type, identifier = " ")
-        }
-    }
-     */
-
 
-    fun createTask(
-        input: String,
-        type: String,
-    ) {
-    }
+     */
 
 }

+ 12 - 0
app/src/main/java/com/nextcloud/client/assistant/AsssistantScreen.kt

@@ -21,6 +21,7 @@
 
 package com.nextcloud.client.assistant
 
+import android.app.Activity
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.horizontalScroll
 import androidx.compose.foundation.layout.Row
@@ -44,6 +45,7 @@ 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.platform.LocalContext
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.text.input.KeyboardType
 import androidx.compose.ui.unit.dp
@@ -51,11 +53,13 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
 import com.nextcloud.ui.composeComponents.SimpleAlertDialog
 import com.owncloud.android.R
 import com.owncloud.android.lib.resources.assistant.model.TaskType
+import com.owncloud.android.utils.DisplayUtils
 
 @OptIn(ExperimentalFoundationApi::class)
 @Composable
 fun AssistantScreen(viewModel: AssistantViewModel, floatingActionButton: FloatingActionButton) {
     // TODO hide sort group, floating action and search bar
+    val isTaskCreated by viewModel.isTaskCreated.collectAsState()
     val taskTypes by viewModel.taskTypes.collectAsState()
     var selectedTaskType: String? by remember {
         mutableStateOf(null)
@@ -88,6 +92,13 @@ fun AssistantScreen(viewModel: AssistantViewModel, floatingActionButton: Floatin
         }
     }
 
+    if (isTaskCreated) {
+        DisplayUtils.showSnackMessage(
+            LocalContext.current as Activity,
+            stringResource(id = R.string.assistant_screen_task_create_success_message)
+        )
+    }
+
     if (showAddTaskAlertDialog) {
         selectedTaskType?.let {
             AddTaskAlertDialog(viewModel, it) {
@@ -99,6 +110,7 @@ fun AssistantScreen(viewModel: AssistantViewModel, floatingActionButton: Floatin
 
 @Composable
 private fun AddTaskAlertDialog(viewModel: AssistantViewModel, type: String, dismiss: () -> Unit) {
+
     var input by remember {
         mutableStateOf("")
     }

+ 8 - 19
app/src/main/java/com/nextcloud/client/assistant/repository/AssistantRepository.kt

@@ -23,8 +23,8 @@ package com.nextcloud.client.assistant.repository
 
 import com.nextcloud.common.NextcloudClient
 import com.owncloud.android.lib.common.operations.RemoteOperationResult
+import com.owncloud.android.lib.resources.assistant.CreateTaskRemoteOperation
 import com.owncloud.android.lib.resources.assistant.GetTaskTypesRemoteOperation
-import com.owncloud.android.lib.resources.assistant.model.TaskType
 import com.owncloud.android.lib.resources.assistant.model.TaskTypes
 
 class AssistantRepository(private val client: NextcloudClient): AssistantRepositoryType {
@@ -33,6 +33,13 @@ class AssistantRepository(private val client: NextcloudClient): AssistantReposit
         return GetTaskTypesRemoteOperation().execute(client)
     }
 
+    override fun createTask(
+        input: String,
+        type: String,
+    ): RemoteOperationResult<Void> {
+        return CreateTaskRemoteOperation(input, type).execute(client)
+    }
+
     /*
       // TODO Check return type
      override fun getTaskList(appId: String): TaskTypes? {
@@ -49,24 +56,6 @@ class AssistantRepository(private val client: NextcloudClient): AssistantReposit
         return operation.get("/ocs/v2.php/textprocessing/task/$id", TaskTypes::class.java)
     }
 
-    override fun createTask(
-        input: String,
-        type: String,
-        appId: String,
-        identifier: String,
-    ): CreatedTask? {
-        val json = JSONObject().apply {
-            put("input", input)
-            put("type", type)
-            put("appId", appId)
-            put("identifier", identifier)
-        }
 
-        return operation.post(
-            "/ocs/v2.php/textprocessing/schedule",
-            CreatedTask::class.java,
-            json
-        )
-    }
      */
 }

+ 6 - 6
app/src/main/java/com/nextcloud/client/assistant/repository/AssistantRepositoryType.kt

@@ -28,6 +28,11 @@ import com.owncloud.android.lib.resources.assistant.model.TaskTypes
 interface AssistantRepositoryType {
     fun getTaskTypes(): RemoteOperationResult<TaskTypes>
 
+    fun createTask(
+        input: String,
+        type: String,
+    ): RemoteOperationResult<Void>
+
     /*
      fun getTask(id: String): CreatedTask?
 
@@ -35,12 +40,7 @@ interface AssistantRepositoryType {
 
     fun getTaskList(appId: String): TaskTypes?
 
-    fun createTask(
-        input: String,
-        type: String,
-        appId: String = "assistant",
-        identifier: String = ""
-    ): CreatedTask?
+
      */
 
 }