From b8bf380eadc88546cd189bda2a937774327d4bc7 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Mon, 11 Mar 2024 15:03:00 +0200
Subject: [PATCH] Add navigation

---
 .../feature/settings/SettingsNavigator.kt     | 24 ++++++++++++++++++
 .../feature/settings/SettingsViewModel.kt     |  6 ++++-
 .../res/navigation/settings_nav_graph.xml     | 25 +++++++++++++++++++
 3 files changed, 54 insertions(+), 1 deletion(-)

diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsNavigator.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsNavigator.kt
index b855c5b75..fed20e91e 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/SettingsNavigator.kt
+++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsNavigator.kt
@@ -1,7 +1,11 @@
 package org.futo.circles.feature.settings
 
 import androidx.navigation.fragment.findNavController
+import org.futo.circles.R
 import org.futo.circles.core.extensions.navigateSafe
+import org.futo.circles.core.extensions.showError
+import org.futo.circles.core.model.ShareUrlTypeArg
+import org.futo.circles.feature.people.PeopleFragmentDirections
 
 class SettingsNavigator(private val fragment: SettingsFragment) {
 
@@ -31,4 +35,24 @@ class SettingsNavigator(private val fragment: SettingsFragment) {
             .navigateSafe(SettingsFragmentDirections.toManageSubscriptionDialogFragment())
     }
 
+    fun navigateToEditProfile() {
+        fragment.findNavController()
+            .navigateSafe(PeopleFragmentDirections.toEditProfileDialogFragment())
+    }
+
+    fun navigateToShareProfile(sharedSpaceId: String?) {
+        sharedSpaceId ?: kotlin.run {
+            fragment.showError(
+                fragment.requireContext().getString(R.string.shared_circles_space_not_found)
+            )
+            return
+        }
+        fragment.findNavController().navigateSafe(
+            PeopleFragmentDirections.toShareProfileDialogFragment(
+                sharedSpaceId,
+                ShareUrlTypeArg.PROFILE
+            )
+        )
+    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt b/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt
index b7d11b530..d9e7a06c7 100644
--- a/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt
+++ b/app/src/main/java/org/futo/circles/feature/settings/SettingsViewModel.kt
@@ -7,6 +7,7 @@ import org.futo.circles.core.base.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.feature.workspace.SharedCircleDataSource
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.matrix.android.sdk.internal.session.media.MediaUsageInfo
 import javax.inject.Inject
@@ -14,7 +15,8 @@ import javax.inject.Inject
 @HiltViewModel
 class SettingsViewModel @Inject constructor(
     private val settingsDataSource: SettingsDataSource,
-    private val refreshTokenManager: RefreshTokenManager
+    private val refreshTokenManager: RefreshTokenManager,
+    private val sharedCircleDataSource: SharedCircleDataSource
 ) : ViewModel() {
 
     val passPhraseLoadingLiveData = settingsDataSource.passPhraseLoadingLiveData
@@ -65,4 +67,6 @@ class SettingsViewModel @Inject constructor(
             mediaUsageInfoLiveData.postValue(mediaUsageInfoResult)
         }
     }
+
+    fun getSharedCircleSpaceId(): String? = sharedCircleDataSource.getSharedCirclesSpaceId()
 }
\ No newline at end of file
diff --git a/app/src/main/res/navigation/settings_nav_graph.xml b/app/src/main/res/navigation/settings_nav_graph.xml
index abe59b047..2c616a26d 100644
--- a/app/src/main/res/navigation/settings_nav_graph.xml
+++ b/app/src/main/res/navigation/settings_nav_graph.xml
@@ -26,6 +26,24 @@
         <action
             android:id="@+id/to_manageSubscriptionDialogFragment"
             app:destination="@id/manageSubscriptionDialogFragment" />
+        <action
+            android:id="@+id/to_editProfileDialogFragment"
+            app:destination="@id/editProfileDialogFragment" />
+        <action
+            android:id="@+id/to_shareProfileDialogFragment"
+            app:destination="@id/share_room_nav_graph">
+
+            <argument
+                android:name="roomId"
+                app:argType="string"
+                app:nullable="false" />
+
+            <argument
+                android:name="urlType"
+                app:argType="org.futo.circles.core.model.ShareUrlTypeArg"
+                app:nullable="false" />
+
+        </action>
     </fragment>
 
 
@@ -59,4 +77,11 @@
         android:name="org.futo.circles.auth.feature.uia.UIADialogFragment"
         tools:layout="@layout/dialog_fragment_uia" />
 
+    <include app:graph="@navigation/share_room_nav_graph" />
+
+    <dialog
+        android:id="@+id/editProfileDialogFragment"
+        android:name="org.futo.circles.auth.feature.profile.edit.EditProfileDialogFragment"
+        tools:layout="@layout/dialog_fragment_edit_profile" />
+
 </navigation>
\ No newline at end of file
-- 
GitLab