From a3d024984fd93fa25e3f20e7cdc4f4eb300ee92b Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Thu, 21 Sep 2023 17:41:54 +0300
Subject: [PATCH] Create SpacesTreeAccountDataSource

---
 .../workspace/SpacesTreeAccountDataSource.kt  | 28 +++++++++++++++++++
 .../core/workspace/tasks/BaseWorkspaceTask.kt | 17 -----------
 .../core/workspace/tasks/CreateRootTask.kt    | 21 --------------
 .../workspace/tasks/WorkspaceTaskStatus.kt    |  8 ------
 4 files changed, 28 insertions(+), 46 deletions(-)
 create mode 100644 core/src/main/java/org/futo/circles/core/workspace/SpacesTreeAccountDataSource.kt
 delete mode 100644 core/src/main/java/org/futo/circles/core/workspace/tasks/BaseWorkspaceTask.kt
 delete mode 100644 core/src/main/java/org/futo/circles/core/workspace/tasks/CreateRootTask.kt
 delete mode 100644 core/src/main/java/org/futo/circles/core/workspace/tasks/WorkspaceTaskStatus.kt

diff --git a/core/src/main/java/org/futo/circles/core/workspace/SpacesTreeAccountDataSource.kt b/core/src/main/java/org/futo/circles/core/workspace/SpacesTreeAccountDataSource.kt
new file mode 100644
index 000000000..0c2a29337
--- /dev/null
+++ b/core/src/main/java/org/futo/circles/core/workspace/SpacesTreeAccountDataSource.kt
@@ -0,0 +1,28 @@
+package org.futo.circles.core.workspace
+
+import org.futo.circles.core.provider.MatrixSessionProvider
+import javax.inject.Inject
+
+class SpacesTreeAccountDataSource @Inject constructor() {
+
+    fun getSpacesTreeConfig() =
+        MatrixSessionProvider.currentSession?.accountDataService()
+            ?.getUserAccountDataEvent(SPACES_CONFIG_KEY)?.content ?: emptyMap()
+
+    suspend fun updateSpacesConfigAccountData(key: String, roomId: String) {
+        val currentConfig = getSpacesTreeConfig().toMutableMap()
+        currentConfig[key] = roomId
+        saveSpacesTreeConfig(currentConfig)
+    }
+
+    fun getRoomIdByKey(key: String) = getSpacesTreeConfig()[key]?.toString()
+
+    private suspend fun saveSpacesTreeConfig(configMap: Map<String, Any>) {
+        MatrixSessionProvider.getSessionOrThrow().accountDataService()
+            .updateUserAccountData(SPACES_CONFIG_KEY, configMap)
+    }
+
+    companion object {
+        private const val SPACES_CONFIG_KEY = "org.futo.circles.config"
+    }
+}
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/workspace/tasks/BaseWorkspaceTask.kt b/core/src/main/java/org/futo/circles/core/workspace/tasks/BaseWorkspaceTask.kt
deleted file mode 100644
index a97747bab..000000000
--- a/core/src/main/java/org/futo/circles/core/workspace/tasks/BaseWorkspaceTask.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.futo.circles.core.workspace.tasks
-
-import org.futo.circles.core.model.CirclesRoom
-
-abstract class BaseWorkspaceTask() {
-
-    protected abstract val room: CirclesRoom
-    protected abstract val titleResId: Int
-    protected abstract val descriptionResId: Int
-    protected var status: WorkspaceTaskStatus = WorkspaceTaskStatus.IDLE
-    protected abstract fun validate()
-    protected abstract fun perform()
-
-    private var onTestUpdateListener: (() -> Unit)? = null
-
-
-}
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/workspace/tasks/CreateRootTask.kt b/core/src/main/java/org/futo/circles/core/workspace/tasks/CreateRootTask.kt
deleted file mode 100644
index 57c5ca8c5..000000000
--- a/core/src/main/java/org/futo/circles/core/workspace/tasks/CreateRootTask.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.futo.circles.core.workspace.tasks
-
-import org.futo.circles.core.model.CirclesRoom
-import org.futo.circles.core.model.RootSpace
-
-class CreateRootTask() : BaseWorkspaceTask() {
-
-    override val room: CirclesRoom = RootSpace()
-    override val titleResId: Int
-        get() = TODO("Not yet implemented")
-    override val descriptionResId: Int
-        get() = TODO("Not yet implemented")
-
-    override fun validate() {
-        TODO("Not yet implemented")
-    }
-
-    override fun perform() {
-        TODO("Not yet implemented")
-    }
-}
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/workspace/tasks/WorkspaceTaskStatus.kt b/core/src/main/java/org/futo/circles/core/workspace/tasks/WorkspaceTaskStatus.kt
deleted file mode 100644
index 0ca0b1d41..000000000
--- a/core/src/main/java/org/futo/circles/core/workspace/tasks/WorkspaceTaskStatus.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.futo.circles.core.workspace.tasks
-
-enum class WorkspaceTaskStatus {
-    IDLE,
-    RUNNING,
-    SUCCESS,
-    FAILED
-}
\ No newline at end of file
-- 
GitLab