From c0e0483ce9d3b9692d6a6e4b044e32e03ae62900 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Mon, 4 Mar 2024 18:13:51 +0200
Subject: [PATCH] Setupe access levels list

---
 .../room/create/CreateRoomDialogFragment.kt    | 18 +++++++++++++-----
 .../change_role/ChangeAccessLevelDataSource.kt |  5 +----
 .../org/futo/circles/core/model/AccessLevel.kt |  3 ++-
 .../org/futo/circles/core/model/CircleType.kt  |  8 --------
 4 files changed, 16 insertions(+), 18 deletions(-)
 delete mode 100644 core/src/main/java/org/futo/circles/core/model/CircleType.kt

diff --git a/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt
index 409d1ded3..0846b1902 100644
--- a/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt
@@ -12,6 +12,7 @@ import org.futo.circles.core.R
 import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment
 import org.futo.circles.core.base.fragment.HasLoadingState
 import org.futo.circles.core.databinding.DialogFragmentCreateRoomBinding
+import org.futo.circles.core.extensions.getRoleNameResId
 import org.futo.circles.core.extensions.getText
 import org.futo.circles.core.extensions.observeData
 import org.futo.circles.core.extensions.observeResponse
@@ -19,8 +20,9 @@ import org.futo.circles.core.extensions.onBackPressed
 import org.futo.circles.core.extensions.setIsVisible
 import org.futo.circles.core.feature.picker.helper.MediaPickerHelper
 import org.futo.circles.core.feature.select_users.SelectUsersFragment
+import org.futo.circles.core.model.AccessLevel
 import org.futo.circles.core.model.CircleRoomTypeArg
-import org.futo.circles.core.model.CircleType
+import org.matrix.android.sdk.api.session.room.powerlevels.Role
 
 
 @AndroidEntryPoint
@@ -40,12 +42,15 @@ class CreateRoomDialogFragment :
     }
     private var selectedUsersFragment: SelectUsersFragment? = null
 
-    private val circleTypeList = CircleType.entries.toTypedArray()
+    private val circleTypeList = AccessLevel.entries.toTypedArray()
     private val circleTypeAdapter by lazy {
         ArrayAdapter(
             requireContext(),
             R.layout.view_spinner_item,
-            circleTypeList.map { getString(it.nameResId) }).apply {
+            circleTypeList.map {
+                val role = Role.fromValue(it.levelValue, Role.Default.value)
+                getString(role.getRoleNameResId())
+            }).apply {
             setDropDownViewResource(R.layout.view_spinner_item)
         }
     }
@@ -77,7 +82,10 @@ class CreateRoomDialogFragment :
                 createRoom()
                 startLoading(btnCreate)
             }
-            spUserRole.adapter = circleTypeAdapter
+            spUserRole.apply {
+                adapter = circleTypeAdapter
+                setSelection(AccessLevel.User.ordinal)
+            }
         }
     }
 
@@ -93,7 +101,7 @@ class CreateRoomDialogFragment :
     private fun getRoomTypeName() = getString(
         when (roomType) {
             CircleRoomTypeArg.Circle -> R.string.circle
-            CircleRoomTypeArg.Group -> R.string.group_name
+            CircleRoomTypeArg.Group -> R.string.group
             CircleRoomTypeArg.Photo -> R.string.gallery
         }
     )
diff --git a/core/src/main/java/org/futo/circles/core/feature/room/manage_members/change_role/ChangeAccessLevelDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/room/manage_members/change_role/ChangeAccessLevelDataSource.kt
index b7d17fbd5..c328ded6b 100644
--- a/core/src/main/java/org/futo/circles/core/feature/room/manage_members/change_role/ChangeAccessLevelDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/room/manage_members/change_role/ChangeAccessLevelDataSource.kt
@@ -2,7 +2,6 @@ package org.futo.circles.core.feature.room.manage_members.change_role
 
 import androidx.lifecycle.SavedStateHandle
 import dagger.hilt.android.scopes.ViewModelScoped
-import org.futo.circles.core.base.READ_ONLY_ROLE
 import org.futo.circles.core.extensions.getOrThrow
 import org.futo.circles.core.model.AccessLevel
 import org.futo.circles.core.model.AccessLevelListItem
@@ -22,9 +21,7 @@ class ChangeAccessLevelDataSource @Inject constructor(
             Role.fromValue(it.levelValue, Role.Default.value),
             it.levelValue == levelValue
         )
-    }.toMutableList().apply {
-        add(AccessLevelListItem(Role.Custom(READ_ONLY_ROLE), READ_ONLY_ROLE == levelValue))
-    }.filter { myUserLevelValue >= it.role.value }
+    }.toMutableList().filter { myUserLevelValue >= it.role.value }
 
     fun isValueChanged(newValue: Int) = newValue != levelValue
 
diff --git a/core/src/main/java/org/futo/circles/core/model/AccessLevel.kt b/core/src/main/java/org/futo/circles/core/model/AccessLevel.kt
index 4482f1741..ac936f93d 100644
--- a/core/src/main/java/org/futo/circles/core/model/AccessLevel.kt
+++ b/core/src/main/java/org/futo/circles/core/model/AccessLevel.kt
@@ -1,7 +1,8 @@
 package org.futo.circles.core.model
 
+import org.futo.circles.core.base.READ_ONLY_ROLE
 import org.matrix.android.sdk.api.session.room.powerlevels.Role
 
 enum class AccessLevel(val levelValue: Int) {
-    Admin(Role.Admin.value), Moderator(Role.Moderator.value), User(Role.Default.value)
+    Admin(Role.Admin.value), Moderator(Role.Moderator.value), User(Role.Default.value), ReadOnly(READ_ONLY_ROLE)
 }
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/model/CircleType.kt b/core/src/main/java/org/futo/circles/core/model/CircleType.kt
deleted file mode 100644
index 1134b7cfd..000000000
--- a/core/src/main/java/org/futo/circles/core/model/CircleType.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.futo.circles.core.model
-
-import org.futo.circles.core.R
-
-enum class CircleType(val nameResId: Int, val messageResId: Int) {
-    Public(R.string.public_type, R.string.public_circle_explanation),
-    Private(R.string.private_type, R.string.private_circle_explanation)
-}
\ No newline at end of file
-- 
GitLab