From b36f3d83df8250b22a8f37469b4670de7684e6b5 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Fri, 22 Sep 2023 16:31:58 +0300
Subject: [PATCH] Create tasks provider

---
 .../workspace/ConfigureWorkspaceViewModel.kt  | 34 +++----------
 .../data_source/WorkspaceTasksProvider.kt     | 49 +++++++++++++++++++
 2 files changed, 57 insertions(+), 26 deletions(-)
 create mode 100644 auth/src/main/java/org/futo/circles/auth/feature/workspace/data_source/WorkspaceTasksProvider.kt

diff --git a/auth/src/main/java/org/futo/circles/auth/feature/workspace/ConfigureWorkspaceViewModel.kt b/auth/src/main/java/org/futo/circles/auth/feature/workspace/ConfigureWorkspaceViewModel.kt
index a317e10b7..d100f0443 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/workspace/ConfigureWorkspaceViewModel.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/workspace/ConfigureWorkspaceViewModel.kt
@@ -3,43 +3,25 @@ package org.futo.circles.auth.feature.workspace
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
-import org.futo.circles.auth.R
+import org.futo.circles.auth.feature.workspace.data_source.ConfigureWorkspaceDataSource
+import org.futo.circles.auth.feature.workspace.data_source.WorkspaceTasksProvider
+import org.futo.circles.auth.model.MandatoryWorkspaceTask
+import org.futo.circles.auth.model.OptionalWorkspaceTask
+import org.futo.circles.auth.model.WorkspaceTask
 import org.futo.circles.core.SingleEventLiveData
 import org.futo.circles.core.extensions.Response
 import org.futo.circles.core.extensions.createResult
 import org.futo.circles.core.extensions.launchBg
-import org.futo.circles.core.model.Circle
-import org.futo.circles.core.model.Gallery
-import org.futo.circles.core.model.GroupsSpace
-import org.futo.circles.auth.model.MandatoryWorkspaceTask
-import org.futo.circles.auth.model.OptionalWorkspaceTask
-import org.futo.circles.core.model.PeopleSpace
-import org.futo.circles.core.model.PhotosSpace
-import org.futo.circles.core.model.RootSpace
-import org.futo.circles.core.model.SharedCirclesSpace
 import org.futo.circles.core.model.TaskStatus
-import org.futo.circles.auth.model.WorkspaceTask
-import org.futo.circles.auth.feature.workspace.data_source.ConfigureWorkspaceDataSource
 import javax.inject.Inject
 
 @HiltViewModel
 class ConfigureWorkspaceViewModel @Inject constructor(
-    private val workspaceDataSource: ConfigureWorkspaceDataSource
+    private val workspaceDataSource: ConfigureWorkspaceDataSource,
+    private val workspaceTasksProvider: WorkspaceTasksProvider
 ) : ViewModel() {
 
-    val tasksLiveData = MutableLiveData(
-        listOf(
-            MandatoryWorkspaceTask(RootSpace(), R.string.passphrase),
-            MandatoryWorkspaceTask(GroupsSpace(), R.string.passphrase),
-            MandatoryWorkspaceTask(PhotosSpace(), R.string.passphrase),
-            MandatoryWorkspaceTask(PeopleSpace(), R.string.passphrase),
-            MandatoryWorkspaceTask(SharedCirclesSpace(), R.string.passphrase),
-            OptionalWorkspaceTask(Gallery(nameId = R.string.passphrase), R.string.passphrase),
-            OptionalWorkspaceTask(Circle(nameId = R.string.friends), R.string.passphrase),
-            OptionalWorkspaceTask(Circle(nameId = R.string.family), R.string.passphrase),
-            OptionalWorkspaceTask(Circle(nameId = R.string.community), R.string.passphrase)
-        )
-    )
+    val tasksLiveData = MutableLiveData(workspaceTasksProvider.getFullTasksList())
     val workspaceResultLiveData = SingleEventLiveData<Response<Unit>>()
 
     fun createWorkspace() = launchBg {
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/workspace/data_source/WorkspaceTasksProvider.kt b/auth/src/main/java/org/futo/circles/auth/feature/workspace/data_source/WorkspaceTasksProvider.kt
new file mode 100644
index 000000000..d69960e0e
--- /dev/null
+++ b/auth/src/main/java/org/futo/circles/auth/feature/workspace/data_source/WorkspaceTasksProvider.kt
@@ -0,0 +1,49 @@
+package org.futo.circles.auth.feature.workspace.data_source
+
+import org.futo.circles.auth.R
+import org.futo.circles.auth.model.MandatoryWorkspaceTask
+import org.futo.circles.auth.model.OptionalWorkspaceTask
+import org.futo.circles.auth.model.WorkspaceTask
+import org.futo.circles.core.model.Circle
+import org.futo.circles.core.model.CirclesSpace
+import org.futo.circles.core.model.Gallery
+import org.futo.circles.core.model.GroupsSpace
+import org.futo.circles.core.model.PeopleSpace
+import org.futo.circles.core.model.PhotosSpace
+import org.futo.circles.core.model.RootSpace
+import org.futo.circles.core.model.SharedCirclesSpace
+import javax.inject.Inject
+
+class WorkspaceTasksProvider @Inject constructor() {
+
+    fun getFullTasksList() = mutableListOf<WorkspaceTask>().apply {
+        addAll(getMandatoryTasks())
+        addAll(getOptionalTasks())
+    }
+
+    private fun getMandatoryTasks() = listOf(
+        MandatoryWorkspaceTask(RootSpace(), R.string.root_space_description),
+        MandatoryWorkspaceTask(CirclesSpace(), R.string.circles_space_description),
+        MandatoryWorkspaceTask(GroupsSpace(), R.string.groups_space_description),
+        MandatoryWorkspaceTask(PhotosSpace(), R.string.galleries_space_description),
+        MandatoryWorkspaceTask(PeopleSpace(), R.string.people_space_description),
+        MandatoryWorkspaceTask(SharedCirclesSpace(), R.string.profile_space_description)
+    )
+
+    private fun getOptionalTasks() = listOf(
+        OptionalWorkspaceTask(
+            Gallery(nameId = org.futo.circles.core.R.string.photos),
+            R.string.photos_room_description
+        ),
+        OptionalWorkspaceTask(
+            Circle(nameId = R.string.friends),
+            R.string.friends_circle_description
+        ),
+        OptionalWorkspaceTask(Circle(nameId = R.string.family), R.string.family_circle_description),
+        OptionalWorkspaceTask(
+            Circle(nameId = R.string.community),
+            R.string.community_circle_description
+        )
+    )
+
+}
\ No newline at end of file
-- 
GitLab