From 5a4784549e599a235dc3a52a514bf6acd27c8dc9 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Thu, 21 Sep 2023 18:13:02 +0300
Subject: [PATCH] Remove setup circles screen

---
 .../circles/setup/SetupCirclesDataSource.kt   | 42 ---------
 .../circles/setup/SetupCirclesFragment.kt     | 90 -------------------
 .../circles/setup/SetupCirclesViewModel.kt    | 45 ----------
 .../circles/setup/list/SetupCirclesAdapter.kt | 23 -----
 .../setup/list/SetupCirclesViewHolder.kt      | 33 -------
 .../res/layout/fragment_setup_circles.xml     | 88 ------------------
 .../res/layout/list_item_setup_circle.xml     | 54 -----------
 .../res/navigation/nav_graph_start_host.xml   | 12 ---
 .../log_in/stages/LogInStagesFragment.kt      | 20 +----
 .../log_in/stages/LoginStagesDataSource.kt    | 15 +---
 .../log_in/stages/LoginStagesViewModel.kt     |  3 +-
 .../profile/setup/SetupProfileFragment.kt     | 14 +--
 .../auth/feature/sign_up/SignUpDataSource.kt  |  3 -
 .../auth/feature/sign_up/SignUpFragment.kt    |  3 -
 .../auth/feature/sign_up/SignUpViewModel.kt   |  1 -
 .../main/res/navigation/nav_graph_auth.xml    | 11 +--
 auth/src/main/res/values/ids.xml              |  1 -
 .../org/futo/circles/core/CirclesAppConfig.kt |  9 +-
 18 files changed, 14 insertions(+), 453 deletions(-)
 delete mode 100644 app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesDataSource.kt
 delete mode 100644 app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesFragment.kt
 delete mode 100644 app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesViewModel.kt
 delete mode 100644 app/src/main/java/org/futo/circles/feature/circles/setup/list/SetupCirclesAdapter.kt
 delete mode 100644 app/src/main/java/org/futo/circles/feature/circles/setup/list/SetupCirclesViewHolder.kt
 delete mode 100644 app/src/main/res/layout/fragment_setup_circles.xml
 delete mode 100644 app/src/main/res/layout/list_item_setup_circle.xml

diff --git a/app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesDataSource.kt b/app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesDataSource.kt
deleted file mode 100644
index 15695a243..000000000
--- a/app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesDataSource.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.futo.circles.feature.circles.setup
-
-import android.content.Context
-import android.net.Uri
-import androidx.lifecycle.MutableLiveData
-import dagger.hilt.android.qualifiers.ApplicationContext
-import org.futo.circles.R
-import org.futo.circles.core.extensions.notEmptyDisplayName
-import org.futo.circles.core.provider.MatrixSessionProvider
-import org.futo.circles.model.SetupCircleListItem
-import org.matrix.android.sdk.api.session.getUser
-import javax.inject.Inject
-
-class SetupCirclesDataSource @Inject constructor(
-    @ApplicationContext private val context: Context
-) {
-
-    val circlesLiveData = MutableLiveData(getInitialCirclesList())
-
-    private fun getInitialCirclesList(): List<SetupCircleListItem> =
-        context.resources.getStringArray(R.array.setup_circles_list).mapIndexed { i, name ->
-            SetupCircleListItem(
-                id = i,
-                name = name,
-                userName = getUserName()
-            )
-        }
-
-    private fun getUserName(): String {
-        val session = MatrixSessionProvider.currentSession
-        val userId = session?.myUserId ?: return ""
-        return session.getUser(userId)?.notEmptyDisplayName() ?: ""
-    }
-
-    fun addCirclesCoverImage(id: Int, uri: Uri) {
-        val list = circlesLiveData.value?.map {
-            if (it.id == id) it.copy(coverUri = uri) else it
-        } ?: emptyList()
-
-        circlesLiveData.postValue(list)
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesFragment.kt b/app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesFragment.kt
deleted file mode 100644
index 8c3095300..000000000
--- a/app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesFragment.kt
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.futo.circles.feature.circles.setup
-
-import android.os.Bundle
-import android.view.View
-import androidx.fragment.app.Fragment
-import androidx.fragment.app.viewModels
-import androidx.navigation.fragment.findNavController
-import androidx.recyclerview.widget.DividerItemDecoration
-import by.kirich1409.viewbindingdelegate.viewBinding
-import dagger.hilt.android.AndroidEntryPoint
-import org.futo.circles.R
-import org.futo.circles.core.extensions.navigateSafe
-import org.futo.circles.core.extensions.observeData
-import org.futo.circles.core.extensions.observeResponse
-import org.futo.circles.core.extensions.showError
-import org.futo.circles.core.extensions.showSuccess
-import org.futo.circles.core.fragment.HasLoadingState
-import org.futo.circles.core.model.LoadingData
-import org.futo.circles.core.picker.helper.MediaPickerHelper
-import org.futo.circles.core.view.LoadingDialog
-import org.futo.circles.databinding.FragmentSetupCirclesBinding
-import org.futo.circles.feature.circles.setup.list.SetupCirclesAdapter
-import org.futo.circles.model.SetupCircleListItem
-
-@AndroidEntryPoint
-class SetupCirclesFragment : Fragment(R.layout.fragment_setup_circles), HasLoadingState {
-
-    override val fragment: Fragment = this
-    private val viewModel by viewModels<SetupCirclesViewModel>()
-    private val binding by viewBinding(FragmentSetupCirclesBinding::bind)
-    private val listAdapter by lazy { SetupCirclesAdapter(::onCircleListItemClicked) }
-    private val mediaPickerHelper = MediaPickerHelper(this, isGalleryAvailable = false)
-    private val loadingDialog by lazy { LoadingDialog(requireContext()) }
-
-
-    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
-        super.onViewCreated(view, savedInstanceState)
-        setupViews()
-        setupObservers()
-    }
-
-    private fun setupViews() {
-        with(binding) {
-            rvSetupCircles.apply {
-                addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL))
-                adapter = listAdapter
-            }
-            btnSkip.setOnClickListener { navigateToBottomMenuScreen() }
-            btnSave.setOnClickListener {
-                showLoading()
-                viewModel.createCircles()
-            }
-        }
-    }
-
-    private fun setupObservers() {
-        viewModel.circlesLiveData.observeData(this, ::setCirclesList)
-        viewModel.createCirclesResponseLiveData.observeResponse(this,
-            success = {
-                loadingDialog.dismiss()
-                showSuccess(getString(R.string.circles_created))
-                navigateToBottomMenuScreen()
-            },
-            error = {
-                showError(it)
-                loadingDialog.dismiss()
-            }
-        )
-    }
-
-    private fun setCirclesList(list: List<SetupCircleListItem>) {
-        listAdapter.submitList(list)
-    }
-
-    private fun onCircleListItemClicked(circle: SetupCircleListItem) {
-        mediaPickerHelper.showMediaPickerDialog(
-            onImageSelected = { id, uri -> viewModel.addImageForCircle(id, uri) },
-            id = circle.id
-        )
-    }
-
-    private fun showLoading() {
-        startLoading(binding.btnSave)
-        loadingDialog.handleLoading(LoadingData(messageId = R.string.configuring_workspace))
-    }
-
-    private fun navigateToBottomMenuScreen() {
-        findNavController().navigateSafe(SetupCirclesFragmentDirections.toHomeFragment())
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesViewModel.kt b/app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesViewModel.kt
deleted file mode 100644
index c9675b169..000000000
--- a/app/src/main/java/org/futo/circles/feature/circles/setup/SetupCirclesViewModel.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.futo.circles.feature.circles.setup
-
-import android.net.Uri
-import androidx.lifecycle.ViewModel
-import dagger.hilt.android.lifecycle.HiltViewModel
-import kotlinx.coroutines.delay
-import org.futo.circles.core.CREATE_ROOM_DELAY
-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.room.CreateRoomDataSource
-import javax.inject.Inject
-
-@HiltViewModel
-class SetupCirclesViewModel @Inject constructor(
-    private val setupCirclesDataSource: SetupCirclesDataSource,
-    private val createRoomDataSource: CreateRoomDataSource
-) : ViewModel() {
-
-    val circlesLiveData = setupCirclesDataSource.circlesLiveData
-    val createCirclesResponseLiveData = SingleEventLiveData<Response<Unit?>>()
-
-    fun createCircles() {
-        val circlesList = circlesLiveData.value ?: return
-        val lastItemIndex = circlesList.size - 1
-        launchBg {
-            val response = createResult {
-                circlesList.forEachIndexed { i, item ->
-                    createRoomDataSource.createCircleWithTimeline(
-                        name = item.name,
-                        iconUri = item.coverUri,
-                        null, false
-                    )
-                    if (i != lastItemIndex) delay(CREATE_ROOM_DELAY)
-                }
-            }
-            createCirclesResponseLiveData.postValue(response)
-        }
-    }
-
-    fun addImageForCircle(id: Int?, uri: Uri) {
-        id?.let { setupCirclesDataSource.addCirclesCoverImage(it, uri) }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/futo/circles/feature/circles/setup/list/SetupCirclesAdapter.kt b/app/src/main/java/org/futo/circles/feature/circles/setup/list/SetupCirclesAdapter.kt
deleted file mode 100644
index 661baab8d..000000000
--- a/app/src/main/java/org/futo/circles/feature/circles/setup/list/SetupCirclesAdapter.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.futo.circles.feature.circles.setup.list
-
-
-import android.view.ViewGroup
-import org.futo.circles.core.list.BaseRvAdapter
-import org.futo.circles.model.SetupCircleListItem
-
-class SetupCirclesAdapter(
-    private val onCircleClicked: (SetupCircleListItem) -> Unit
-) : BaseRvAdapter<SetupCircleListItem, SetupCirclesViewHolder>(DefaultIdEntityCallback()) {
-
-    override fun onCreateViewHolder(
-        parent: ViewGroup,
-        viewType: Int
-    ): SetupCirclesViewHolder = SetupCirclesViewHolder(
-        parent = parent,
-        onCircleClicked = { position -> onCircleClicked(getItem(position)) }
-    )
-
-    override fun onBindViewHolder(holder: SetupCirclesViewHolder, position: Int) {
-        holder.bind(getItem(position))
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/futo/circles/feature/circles/setup/list/SetupCirclesViewHolder.kt b/app/src/main/java/org/futo/circles/feature/circles/setup/list/SetupCirclesViewHolder.kt
deleted file mode 100644
index d290d4a1d..000000000
--- a/app/src/main/java/org/futo/circles/feature/circles/setup/list/SetupCirclesViewHolder.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.futo.circles.feature.circles.setup.list
-
-import android.view.ViewGroup
-import androidx.recyclerview.widget.RecyclerView
-import org.futo.circles.R
-import org.futo.circles.core.extensions.onClick
-import org.futo.circles.core.list.ViewBindingHolder
-import org.futo.circles.databinding.ListItemSetupCircleBinding
-import org.futo.circles.model.SetupCircleListItem
-
-class SetupCirclesViewHolder(
-    parent: ViewGroup,
-    onCircleClicked: (Int) -> Unit
-) : RecyclerView.ViewHolder(inflate(parent, ListItemSetupCircleBinding::inflate)) {
-
-    private companion object : ViewBindingHolder
-
-    private val binding = baseBinding as ListItemSetupCircleBinding
-
-    init {
-        onClick(itemView) { position -> onCircleClicked(position) }
-    }
-
-    fun bind(data: SetupCircleListItem) {
-        with(binding) {
-            data.coverUri?.let { ivCircleCover.setImageURI(it) }
-                ?: ivCircleCover.setImageResource(R.drawable.add_image_placeholder)
-
-            tvCircleName.text = data.name
-            tvUserName.text = data.userName
-        }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_setup_circles.xml b/app/src/main/res/layout/fragment_setup_circles.xml
deleted file mode 100644
index 9e3a40256..000000000
--- a/app/src/main/res/layout/fragment_setup_circles.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-
-    <com.google.android.material.appbar.MaterialToolbar
-        android:id="@+id/toolbar"
-        android:layout_width="0dp"
-        android:layout_height="?attr/actionBarSize"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:title="@string/setup_circles"
-        app:titleCentered="true" />
-
-    <View
-        android:id="@+id/toolbarDivider"
-        android:layout_width="0dp"
-        android:layout_height="@dimen/divider_height"
-        android:background="@color/divider_color"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/toolbar" />
-
-    <androidx.constraintlayout.widget.Guideline
-        android:id="@+id/guidelineStart"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        app:layout_constraintGuide_begin="36dp" />
-
-    <androidx.constraintlayout.widget.Guideline
-        android:id="@+id/guidelineEnd"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        app:layout_constraintGuide_end="36dp" />
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/rvSetupCircles"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
-        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
-        app:layout_constraintBottom_toTopOf="@id/tvEncryptionWarning"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/toolbarDivider" />
-
-    <TextView
-        android:id="@+id/tvEncryptionWarning"
-        style="@style/footNote"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginBottom="16dp"
-        android:drawablePadding="8dp"
-        android:text="@string/circle_encryption_warning"
-        android:textColor="@color/yellow"
-        app:drawableStartCompat="@drawable/ic_info"
-        app:drawableTint="@color/yellow"
-        app:layout_constraintBottom_toTopOf="@id/btnSave"
-        app:layout_constraintEnd_toEndOf="@id/guidelineEnd"
-        app:layout_constraintStart_toStartOf="@id/guidelineStart" />
-
-    <org.futo.circles.core.view.LoadingButton
-        android:id="@+id/btnSave"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="24dp"
-        android:layout_marginTop="16dp"
-        android:layout_marginBottom="24dp"
-        android:text="@string/save"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="@id/guidelineEnd"
-        app:layout_constraintStart_toEndOf="@id/btnSkip" />
-
-    <com.google.android.material.button.MaterialButton
-        android:id="@+id/btnSkip"
-        style="@style/NegativeButtonStyle"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:text="@string/skip"
-        app:layout_constraintBottom_toBottomOf="@id/btnSave"
-        app:layout_constraintEnd_toStartOf="@id/btnSave"
-        app:layout_constraintStart_toStartOf="@id/guidelineStart" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/list_item_setup_circle.xml b/app/src/main/res/layout/list_item_setup_circle.xml
deleted file mode 100644
index 06ae73afb..000000000
--- a/app/src/main/res/layout/list_item_setup_circle.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?selectableItemBackground"
-    android:clickable="true"
-    android:focusable="true"
-    android:padding="4dp">
-
-
-    <com.google.android.material.imageview.ShapeableImageView
-        android:id="@+id/ivCircleCover"
-        android:layout_width="@dimen/group_icon_size"
-        android:layout_height="@dimen/group_icon_size"
-        android:scaleType="centerCrop"
-        android:src="@drawable/add_image_placeholder"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.GroupIconRadius" />
-
-    <TextView
-        android:id="@+id/tvCircleName"
-        style="@style/title2"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:ellipsize="end"
-        android:gravity="center"
-        android:lines="1"
-        app:layout_constraintBottom_toTopOf="@id/tvUserName"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@id/ivCircleCover"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_chainStyle="packed"
-        tools:text="texsdt" />
-
-    <TextView
-        android:id="@+id/tvUserName"
-        style="@style/subheadline"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="4dp"
-        android:ellipsize="end"
-        android:gravity="center"
-        android:lines="1"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="@id/tvCircleName"
-        app:layout_constraintTop_toBottomOf="@id/tvCircleName"
-        tools:text="texsdt" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/navigation/nav_graph_start_host.xml b/app/src/main/res/navigation/nav_graph_start_host.xml
index 2786cacc4..419cdf764 100644
--- a/app/src/main/res/navigation/nav_graph_start_host.xml
+++ b/app/src/main/res/navigation/nav_graph_start_host.xml
@@ -54,18 +54,6 @@
         </action>
     </fragment>
 
-    <fragment
-        android:id="@+id/setupCirclesFragment"
-        android:name="org.futo.circles.feature.circles.setup.SetupCirclesFragment"
-        android:label="SetupCirclesFragment"
-        tools:layout="@layout/fragment_setup_circles">
-        <action
-            android:id="@+id/to_homeFragment"
-            app:destination="@id/homeFragment"
-            app:popUpTo="@id/setupCirclesFragment"
-            app:popUpToInclusive="true" />
-    </fragment>
-
     <include app:graph="@navigation/nav_graph_auth" />
 
     <dialog
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LogInStagesFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LogInStagesFragment.kt
index 7e940c2af..4b0999d38 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LogInStagesFragment.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LogInStagesFragment.kt
@@ -17,7 +17,6 @@ import org.futo.circles.auth.base.LoginStageNavigationEvent
 import org.futo.circles.auth.databinding.FragmentLoginStagesBinding
 import org.futo.circles.auth.feature.log_in.recovery.EnterPassPhraseDialog
 import org.futo.circles.auth.feature.log_in.recovery.EnterPassPhraseDialogListener
-import org.futo.circles.core.CirclesAppConfig
 import org.futo.circles.core.extensions.navigateSafe
 import org.futo.circles.core.extensions.observeData
 import org.futo.circles.core.extensions.observeResponse
@@ -79,15 +78,11 @@ class LogInStagesFragment : Fragment(R.layout.fragment_login_stages),
         viewModel.passPhraseLoadingLiveData.observeData(this) {
             loadingDialog.handleLoading(it)
         }
-        viewModel.spacesTreeLoadingLiveData.observeData(this) {
-            loadingDialog.handleLoading(it)
-        }
         viewModel.loginNavigationLiveData.observeData(this) { event ->
             when (event) {
-                LoginNavigationEvent.Main -> navigateToBottomMenuFragment()
-                LoginNavigationEvent.SetupCircles -> navigateToSetupCirclesOrHome()
+                LoginNavigationEvent.Main -> navigateToHome()
                 LoginNavigationEvent.PassPhrase -> showPassPhraseDialog()
-                else -> navigateToBottomMenuFragment()
+                else -> navigateToHome()
             }
         }
         viewModel.messageEventLiveData.observeData(this) { messageId ->
@@ -123,19 +118,10 @@ class LogInStagesFragment : Fragment(R.layout.fragment_login_stages),
             }
     }
 
-    private fun navigateToBottomMenuFragment() {
+    private fun navigateToHome() {
         findNavController().navigateSafe(LogInStagesFragmentDirections.toHomeFragment())
     }
 
-    private fun navigateToSetupCirclesOrHome() {
-        findNavController().navigateSafe(
-            if (CirclesAppConfig.isSetupCirclesEnabled)
-                LogInStagesFragmentDirections.toSetupCirclesFragment()
-            else
-                LogInStagesFragmentDirections.toHomeFragment()
-        )
-    }
-
     private fun showDiscardDialog() {
         showDialog(
             titleResIdRes = R.string.discard_current_login_progress,
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LoginStagesDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LoginStagesDataSource.kt
index 49b1b796c..f94e6f252 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LoginStagesDataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LoginStagesDataSource.kt
@@ -20,20 +20,18 @@ import org.matrix.android.sdk.api.util.JsonDict
 import javax.inject.Inject
 import javax.inject.Singleton
 
-enum class LoginNavigationEvent { Main, SetupCircles, PassPhrase }
+enum class LoginNavigationEvent { Main, PassPhrase }
 
 @Singleton
 class LoginStagesDataSource @Inject constructor(
     @ApplicationContext private val context: Context,
     private val restoreBackupDataSource: RestoreBackupDataSource,
-    private val coreSpacesTreeBuilder: CoreSpacesTreeBuilder,
     private val encryptionAlgorithmHelper: EncryptionAlgorithmHelper,
     private val createPassPhraseDataSource: CreatePassPhraseDataSource
 ) : BaseLoginStagesDataSource(context) {
 
     val loginNavigationLiveData = SingleEventLiveData<LoginNavigationEvent>()
     val passPhraseLoadingLiveData = restoreBackupDataSource.loadingLiveData
-    val spacesTreeLoadingLiveData = coreSpacesTreeBuilder.loadingLiveData
     val messageEventLiveData = SingleEventLiveData<Int>()
 
     override suspend fun performLoginStage(
@@ -112,17 +110,12 @@ class LoginStagesDataSource @Inject constructor(
     private suspend fun handleRestoreResult(restoreResult: Response<Unit>): Response<Unit> {
         when (restoreResult) {
             is Response.Error -> loginNavigationLiveData.postValue(LoginNavigationEvent.PassPhrase)
-            is Response.Success -> createSpacesTreeIfNotExist()
+            is Response.Success -> navigateToMain()
         }
         return restoreResult
     }
 
-    suspend fun createSpacesTreeIfNotExist() {
-        val isCirclesCreated = coreSpacesTreeBuilder.isCirclesHierarchyCreated()
-        if (!isCirclesCreated) createResult { coreSpacesTreeBuilder.createCoreSpacesTree() }
-        loginNavigationLiveData.postValue(
-            if (isCirclesCreated) LoginNavigationEvent.Main
-            else LoginNavigationEvent.SetupCircles
-        )
+    fun navigateToMain() {
+        loginNavigationLiveData.postValue(LoginNavigationEvent.Main)
     }
 }
\ No newline at end of file
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LoginStagesViewModel.kt b/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LoginStagesViewModel.kt
index 2b98a27c7..610bf135a 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LoginStagesViewModel.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/log_in/stages/LoginStagesViewModel.kt
@@ -17,7 +17,6 @@ class LoginStagesViewModel @Inject constructor(
     val restoreKeysLiveData = org.futo.circles.core.SingleEventLiveData<Response<Unit>>()
     val loginNavigationLiveData = loginStagesDataSource.loginNavigationLiveData
     val passPhraseLoadingLiveData = loginStagesDataSource.passPhraseLoadingLiveData
-    val spacesTreeLoadingLiveData = loginStagesDataSource.spacesTreeLoadingLiveData
     val messageEventLiveData = loginStagesDataSource.messageEventLiveData
 
     fun restoreBackupWithPassPhrase(passphrase: String) {
@@ -41,7 +40,7 @@ class LoginStagesViewModel @Inject constructor(
     }
 
     fun onDoNotRestoreBackup() {
-        launchBg { loginStagesDataSource.createSpacesTreeIfNotExist() }
+        loginStagesDataSource.navigateToMain()
     }
 
 }
\ No newline at end of file
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/profile/setup/SetupProfileFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/profile/setup/SetupProfileFragment.kt
index bc4330ed2..761dc679a 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/profile/setup/SetupProfileFragment.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/profile/setup/SetupProfileFragment.kt
@@ -10,7 +10,6 @@ import by.kirich1409.viewbindingdelegate.viewBinding
 import dagger.hilt.android.AndroidEntryPoint
 import org.futo.circles.auth.R
 import org.futo.circles.auth.databinding.FragmentSetupProfileBinding
-import org.futo.circles.core.CirclesAppConfig
 import org.futo.circles.core.extensions.getText
 import org.futo.circles.core.extensions.navigateSafe
 import org.futo.circles.core.extensions.observeData
@@ -35,7 +34,7 @@ class SetupProfileFragment : Fragment(R.layout.fragment_setup_profile), HasLoadi
 
     private fun setupViews() {
         with(binding) {
-            btnSkip.setOnClickListener { navigateToSetupCirclesOrHome() }
+            btnSkip.setOnClickListener { navigateToHome() }
             btnSave.setOnClickListener {
                 startLoading(btnSave)
                 viewModel.saveProfileInfo(tilDisplayName.getText())
@@ -62,17 +61,12 @@ class SetupProfileFragment : Fragment(R.layout.fragment_setup_profile), HasLoadi
         }
         viewModel.saveProfileResponseLiveData.observeResponse(
             this,
-            success = { navigateToSetupCirclesOrHome() }
+            success = { navigateToHome() }
         )
     }
 
-    private fun navigateToSetupCirclesOrHome() {
-        findNavController().navigateSafe(
-            if (CirclesAppConfig.isSetupCirclesEnabled)
-                SetupProfileFragmentDirections.toSetupCirclesFragment()
-            else
-                SetupProfileFragmentDirections.toHomeFragment()
-        )
+    private fun navigateToHome() {
+        findNavController().navigateSafe(SetupProfileFragmentDirections.toHomeFragment())
     }
 
     private fun setSaveButtonEnabled() {
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpDataSource.kt
index 2ea456317..df076973c 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpDataSource.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpDataSource.kt
@@ -26,7 +26,6 @@ enum class SignUpNavigationEvents { TokenValidation, Subscription, AcceptTerm, V
 @Singleton
 class SignUpDataSource @Inject constructor(
     @ApplicationContext private val context: Context,
-    private val coreSpacesTreeBuilder: CoreSpacesTreeBuilder,
     private val createPassPhraseDataSource: CreatePassPhraseDataSource,
     private val preferencesProvider: PreferencesProvider
 ) {
@@ -35,7 +34,6 @@ class SignUpDataSource @Inject constructor(
     val navigationLiveData = SingleEventLiveData<SignUpNavigationEvents>()
     val finishRegistrationLiveData = SingleEventLiveData<Response<Unit>>()
     val passPhraseLoadingLiveData = createPassPhraseDataSource.loadingLiveData
-    val spaceTreeLoadingLiveData = coreSpacesTreeBuilder.loadingLiveData
 
     val stagesToComplete = mutableListOf<Stage>()
 
@@ -116,7 +114,6 @@ class SignUpDataSource @Inject constructor(
         MatrixSessionProvider.awaitForSessionStart(session)
         preferencesProvider.setShouldShowAllExplanations()
         createPassPhraseDataSource.createPassPhraseBackup()
-        coreSpacesTreeBuilder.createCoreSpacesTree()
         BSSpekeClientProvider.clear()
     }
 
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpFragment.kt
index bd7803084..3c62a42be 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpFragment.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpFragment.kt
@@ -56,9 +56,6 @@ class SignUpFragment : Fragment(R.layout.fragment_sign_up),
         viewModel.passPhraseLoadingLiveData.observeData(this) {
             loadingDialog.handleLoading(it)
         }
-        viewModel.spaceTreeLoadingLiveData.observeData(this) {
-            loadingDialog.handleLoading(it)
-        }
     }
 
 
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpViewModel.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpViewModel.kt
index e47ecf654..039bc2140 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpViewModel.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/SignUpViewModel.kt
@@ -11,7 +11,6 @@ class SignUpViewModel @Inject constructor(
 
     val subtitleLiveData = datasource.subtitleLiveData
     val passPhraseLoadingLiveData = datasource.passPhraseLoadingLiveData
-    val spaceTreeLoadingLiveData = datasource.spaceTreeLoadingLiveData
     val finishRegistrationLiveData = datasource.finishRegistrationLiveData
     val navigationLiveData = datasource.navigationLiveData
 
diff --git a/auth/src/main/res/navigation/nav_graph_auth.xml b/auth/src/main/res/navigation/nav_graph_auth.xml
index 130ebbc31..1f5171f25 100644
--- a/auth/src/main/res/navigation/nav_graph_auth.xml
+++ b/auth/src/main/res/navigation/nav_graph_auth.xml
@@ -32,11 +32,6 @@
             app:destination="@id/homeFragment"
             app:popUpTo="@id/logInFragment"
             app:popUpToInclusive="true" />
-        <action
-            android:id="@+id/to_setupCirclesFragment"
-            app:destination="@id/setupCirclesFragment"
-            app:popUpTo="@id/logInFragment"
-            app:popUpToInclusive="true" />
     </fragment>
     <fragment
         android:id="@+id/signUpFragment"
@@ -54,11 +49,7 @@
         android:name="org.futo.circles.auth.feature.profile.setup.SetupProfileFragment"
         android:label="SetupProfileFragment"
         tools:layout="@layout/fragment_setup_profile">
-        <action
-            android:id="@+id/to_setupCirclesFragment"
-            app:destination="@id/setupCirclesFragment"
-            app:popUpTo="@id/setupProfileFragment"
-            app:popUpToInclusive="true" />
+
         <action
             android:id="@+id/to_homeFragment"
             app:destination="@id/homeFragment"
diff --git a/auth/src/main/res/values/ids.xml b/auth/src/main/res/values/ids.xml
index a3af135fe..fdc7badf4 100644
--- a/auth/src/main/res/values/ids.xml
+++ b/auth/src/main/res/values/ids.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <item name="homeFragment" type="id" />
-    <item name="setupCirclesFragment" type="id" />
 </resources>
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/CirclesAppConfig.kt b/core/src/main/java/org/futo/circles/core/CirclesAppConfig.kt
index 9e3cc66bc..25844cca3 100644
--- a/core/src/main/java/org/futo/circles/core/CirclesAppConfig.kt
+++ b/core/src/main/java/org/futo/circles/core/CirclesAppConfig.kt
@@ -28,9 +28,6 @@ object CirclesAppConfig {
     var isRageshakeEnabled = false
         private set
 
-    var isSetupCirclesEnabled = true
-        private set
-
     data class Initializer(
         private var appId: String? = null,
         private var version: String? = null,
@@ -40,8 +37,7 @@ object CirclesAppConfig {
         private var euDomain: String? = null,
         private var subscriptionEnabled: Boolean = false,
         private var mediaBackupEnabled: Boolean = false,
-        private var rageshakeEnabled: Boolean = false,
-        private var setupCirclesEnabled: Boolean = true
+        private var rageshakeEnabled: Boolean = false
     ) {
 
         fun buildConfigInfo(appId: String, version: String, flavour: String = "empty") =
@@ -64,8 +60,6 @@ object CirclesAppConfig {
 
         fun isRageshakeEnabled(isEnabled: Boolean) = apply { this.rageshakeEnabled = isEnabled }
 
-        fun isSetupCirclesEnabled(isEnabled: Boolean) =
-            apply { this.setupCirclesEnabled = isEnabled }
 
         fun init() {
             CirclesAppConfig.appId = appId?.takeIf { it.isNotEmpty() }
@@ -89,7 +83,6 @@ object CirclesAppConfig {
             isSubscriptionsEnabled = subscriptionEnabled
             isMediaBackupEnabled = mediaBackupEnabled
             isRageshakeEnabled = rageshakeEnabled
-            isSetupCirclesEnabled = setupCirclesEnabled
         }
     }
 
-- 
GitLab