From a08069cb32b4aaefffa37234928d1f00c40f32b0 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Tue, 30 May 2023 15:35:34 +0300 Subject: [PATCH] Integrate auth navigation --- .../res/navigation/nav_graph_start_host.xml | 60 +----------------- .../res/navigation/settings_nav_graph.xml | 2 +- .../futo/circles/auth/base/AuthNavigator.kt | 39 ------------ .../auth/feature/log_in/LogInFragment.kt | 7 +-- .../log_in/stages/LogInStagesFragment.kt | 5 +- .../auth/feature/sign_up/SignUpFragment.kt | 3 +- .../setup_profile/SetupProfileFragment.kt | 3 +- .../main/res/navigation/nav_graph_auth.xml | 63 +++++++++++++++++++ auth/src/main/res/values/ids.xml | 5 ++ auth/src/main/res/values/strings.xml | 6 -- 10 files changed, 79 insertions(+), 114 deletions(-) delete mode 100644 auth/src/main/java/org/futo/circles/auth/base/AuthNavigator.kt create mode 100644 auth/src/main/res/navigation/nav_graph_auth.xml create mode 100644 auth/src/main/res/values/ids.xml 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 eee0ed259..282cd78b5 100644 --- a/app/src/main/res/navigation/nav_graph_start_host.xml +++ b/app/src/main/res/navigation/nav_graph_start_host.xml @@ -13,7 +13,7 @@ <action android:id="@+id/to_logInFragment" - app:destination="@id/logInFragment" + app:destination="@id/nav_graph_auth" app:popUpTo="@id/splashFragment" app:popUpToInclusive="true" /> <action @@ -23,51 +23,11 @@ app:popUpToInclusive="true" /> </fragment> - <fragment - android:id="@+id/logInFragment" - android:name="org.futo.circles.feature.log_in.LogInFragment" - android:label="Log In" - tools:layout="@layout/fragment_log_in"> - <action - android:id="@+id/to_signUpFragment" - app:destination="@id/signUpFragment" /> - <action - android:id="@+id/to_loginStagesFragment" - app:destination="@id/loginStagesFragment" /> - <action - android:id="@+id/to_bottomNavigationFragment" - app:destination="@id/bottomNavigationFragment" - app:popUpTo="@id/logInFragment" - app:popUpToInclusive="true" /> - </fragment> - - <fragment - android:id="@+id/signUpFragment" - android:name="org.futo.circles.feature.sign_up.SignUpFragment" - android:label="Sign up" - tools:layout="@layout/fragment_sign_up"> - <action - android:id="@+id/to_setupProfileFragment" - app:destination="@id/setupProfileFragment" - app:popUpTo="@id/logInFragment" - app:popUpToInclusive="true" /> - </fragment> - <fragment android:id="@+id/bottomNavigationFragment" android:name="org.futo.circles.feature.home.HomeFragment" tools:layout="@layout/fragment_bottom_navigation" /> - <fragment - android:id="@+id/setupProfileFragment" - android:name="org.futo.circles.feature.sign_up.setup_profile.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" /> - </fragment> + <fragment android:id="@+id/setupCirclesFragment" android:name="org.futo.circles.feature.circles.setup.SetupCirclesFragment" @@ -79,21 +39,7 @@ app:popUpTo="@id/setupCirclesFragment" app:popUpToInclusive="true" /> </fragment> - <fragment - android:id="@+id/loginStagesFragment" - android:name="org.futo.circles.feature.log_in.stages.LogInStagesFragment" - tools:layout="@layout/fragment_login_stages"> - <action - android:id="@+id/to_bottomNavigationFragment" - app:destination="@id/bottomNavigationFragment" - 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> + <include app:graph="@navigation/nav_graph_auth" /> </navigation> \ 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 f14bb8a3d..96794251c 100644 --- a/app/src/main/res/navigation/settings_nav_graph.xml +++ b/app/src/main/res/navigation/settings_nav_graph.xml @@ -110,7 +110,7 @@ <dialog android:id="@+id/reAuthStagesDialogFragment" - android:name="org.futo.circles.feature.reauth.ReAuthStagesDialogFragment" + android:name="org.futo.circles.auth.feature.reauth.ReAuthStagesDialogFragment" tools:layout="@layout/fragment_login_stages" /> <dialog diff --git a/auth/src/main/java/org/futo/circles/auth/base/AuthNavigator.kt b/auth/src/main/java/org/futo/circles/auth/base/AuthNavigator.kt deleted file mode 100644 index c459fe01a..000000000 --- a/auth/src/main/java/org/futo/circles/auth/base/AuthNavigator.kt +++ /dev/null @@ -1,39 +0,0 @@ -package org.futo.circles.auth.base - -import android.content.Context -import androidx.core.net.toUri -import androidx.navigation.NavController -import androidx.navigation.NavDeepLinkRequest -import org.futo.circles.auth.R -import org.futo.circles.core.CirclesAppConfig - -object AuthNavigator { - - fun navigateToBottomMenu(context: Context, navController: NavController) { - navController.navigateWithUri(context, R.string.navigate_to_bottom_menu_uri) - } - - fun navigateToSetupCircles(context: Context, navController: NavController) { - navController.navigateWithUri(context, R.string.navigate_to_setup_circles_uri) - } - - fun navigateToLoginStages(context: Context, navController: NavController) { - navController.navigateWithUri(context, R.string.navigate_to_login_stages_uri) - } - - fun navigateToSignUp(context: Context, navController: NavController) { - navController.navigateWithUri(context, R.string.navigate_to_signup_uri) - } - - fun navigateToSetupProfile(context: Context, navController: NavController) { - navController.navigateWithUri(context, R.string.navigate_to_setup_profile_uri) - } - - - private fun NavController.navigateWithUri(context: Context, uriResId: Int) { - val request = NavDeepLinkRequest.Builder - .fromUri(context.getString(uriResId, CirclesAppConfig.appId).toUri()) - .build() - navigate(request) - } -} \ No newline at end of file diff --git a/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInFragment.kt index 6f1960e1a..7c60d2cae 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInFragment.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInFragment.kt @@ -8,7 +8,6 @@ import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import by.kirich1409.viewbindingdelegate.viewBinding import org.futo.circles.auth.R -import org.futo.circles.auth.base.AuthNavigator import org.futo.circles.auth.databinding.FragmentLogInBinding import org.futo.circles.auth.feature.log_in.switch_user.list.SwitchUsersAdapter import org.futo.circles.auth.feature.log_in.switch_user.list.SwitchUsersViewHolder @@ -84,7 +83,7 @@ class LogInFragment : Fragment(R.layout.fragment_log_in), HasLoadingState { private fun setupObservers() { viewModel.loginResultLiveData.observeResponse(this, success = { - AuthNavigator.navigateToLoginStages(requireContext(), findNavController()) + findNavController().navigate(LogInFragmentDirections.toLoginStagesFragment()) } ) viewModel.switchUsersLiveData.observeData(this) { @@ -92,14 +91,14 @@ class LogInFragment : Fragment(R.layout.fragment_log_in), HasLoadingState { switchUsersAdapter.submitList(it) } viewModel.navigateToBottomMenuScreenLiveData.observeData(this) { - AuthNavigator.navigateToBottomMenu(requireContext(), findNavController()) + findNavController().navigate(LogInFragmentDirections.toBottomNavigationFragment()) } } private fun setOnClickActions() { with(binding) { btnSignUp.setOnClickListener { - AuthNavigator.navigateToSignUp(requireContext(), findNavController()) + findNavController().navigate(LogInFragmentDirections.toSignUpFragment()) } btnLogin.setOnClickListener { val userName = binding.tilUserName.getText() 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 0ba11d75a..215409c72 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 @@ -11,7 +11,6 @@ import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.findNavController import by.kirich1409.viewbindingdelegate.viewBinding import org.futo.circles.auth.R -import org.futo.circles.auth.base.AuthNavigator import org.futo.circles.auth.base.LoginStageNavigationEvent import org.futo.circles.auth.databinding.FragmentLoginStagesBinding import org.futo.circles.auth.feature.log_in.EnterPassPhraseDialog @@ -117,11 +116,11 @@ class LogInStagesFragment : Fragment(R.layout.fragment_login_stages), } private fun navigateToBottomMenuFragment() { - AuthNavigator.navigateToBottomMenu(requireContext(), findNavController()) + findNavController().navigate(LogInStagesFragmentDirections.toBottomNavigationFragment()) } private fun navigateToSetupCircles() { - AuthNavigator.navigateToSetupCircles(requireContext(), findNavController()) + findNavController().navigate(LogInStagesFragmentDirections.toSetupCirclesFragment()) } private fun showDiscardDialog() { 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 3ff9ea9b0..491fe15c7 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 @@ -9,7 +9,6 @@ import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.findNavController import by.kirich1409.viewbindingdelegate.viewBinding import org.futo.circles.auth.R -import org.futo.circles.auth.base.AuthNavigator import org.futo.circles.auth.databinding.FragmentSignUpBinding import org.futo.circles.core.extensions.observeData import org.futo.circles.core.extensions.observeResponse @@ -94,7 +93,7 @@ class SignUpFragment : Fragment(R.layout.fragment_sign_up), } private fun navigateToSetupProfile() { - AuthNavigator.navigateToSetupProfile(requireContext(), findNavController()) + findNavController().navigate(SignUpFragmentDirections.toSetupProfileFragment()) } } \ No newline at end of file diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/setup_profile/SetupProfileFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/setup_profile/SetupProfileFragment.kt index 22ae87233..c738886b8 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/setup_profile/SetupProfileFragment.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/setup_profile/SetupProfileFragment.kt @@ -7,7 +7,6 @@ import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import by.kirich1409.viewbindingdelegate.viewBinding import org.futo.circles.auth.R -import org.futo.circles.auth.base.AuthNavigator import org.futo.circles.auth.databinding.FragmentSetupProfileBinding import org.futo.circles.core.extensions.getText import org.futo.circles.core.extensions.observeData @@ -63,7 +62,7 @@ class SetupProfileFragment : Fragment(R.layout.fragment_setup_profile), HasLoadi } private fun navigateToSetupCircles() { - AuthNavigator.navigateToSetupCircles(requireContext(), findNavController()) + findNavController().navigate(SetupProfileFragmentDirections.toSetupCirclesFragment()) } private fun setSaveButtonEnabled() { diff --git a/auth/src/main/res/navigation/nav_graph_auth.xml b/auth/src/main/res/navigation/nav_graph_auth.xml new file mode 100644 index 000000000..faddf293f --- /dev/null +++ b/auth/src/main/res/navigation/nav_graph_auth.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<navigation 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:id="@+id/nav_graph_auth" + app:startDestination="@id/logInFragment"> + + <fragment + android:id="@+id/logInFragment" + android:name="org.futo.circles.auth.feature.log_in.LogInFragment" + android:label="Log In" + tools:layout="@layout/fragment_log_in"> + <action + android:id="@+id/to_signUpFragment" + app:destination="@id/signUpFragment" /> + <action + android:id="@+id/to_loginStagesFragment" + app:destination="@id/loginStagesFragment" /> + <action + android:id="@+id/to_bottomNavigationFragment" + app:destination="@id/bottomNavigationFragment" + app:popUpTo="@id/logInFragment" + app:popUpToInclusive="true" /> + </fragment> + <fragment + android:id="@+id/loginStagesFragment" + android:name="org.futo.circles.auth.feature.log_in.stages.LogInStagesFragment" + tools:layout="@layout/fragment_login_stages"> + + <action + android:id="@+id/to_bottomNavigationFragment" + app:destination="@id/bottomNavigationFragment" + 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" + android:name="org.futo.circles.auth.feature.sign_up.SignUpFragment" + android:label="Sign up" + tools:layout="@layout/fragment_sign_up"> + <action + android:id="@+id/to_setupProfileFragment" + app:destination="@id/setupProfileFragment" + app:popUpTo="@id/logInFragment" + app:popUpToInclusive="true" /> + </fragment> + <fragment + android:id="@+id/setupProfileFragment" + android:name="org.futo.circles.auth.feature.sign_up.setup_profile.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" /> + </fragment> +</navigation> diff --git a/auth/src/main/res/values/ids.xml b/auth/src/main/res/values/ids.xml new file mode 100644 index 000000000..e37603209 --- /dev/null +++ b/auth/src/main/res/values/ids.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <item name="bottomNavigationFragment" type="id" /> + <item name="setupCirclesFragment" type="id" /> +</resources> \ No newline at end of file diff --git a/auth/src/main/res/values/strings.xml b/auth/src/main/res/values/strings.xml index 66569cf8a..f01798cf8 100644 --- a/auth/src/main/res/values/strings.xml +++ b/auth/src/main/res/values/strings.xml @@ -95,12 +95,6 @@ <string name="remove">Remove</string> <string name="not_supported_navigation_event">Not supported navigation event</string> - <string name="navigate_to_bottom_menu_uri" translatable="false">android-app://%1$s/bottomNavigationFragment</string> - <string name="navigate_to_setup_profile_uri" translatable="false">android-app://%1$s/setupProfileFragment</string> - <string name="navigate_to_setup_circles_uri" translatable="false">android-app://%1$s/setupCirclesFragment</string> - <string name="navigate_to_login_stages_uri" translatable="false">android-app://%1$s/loginStagesFragment</string> - <string name="navigate_to_signup_uri" translatable="false">android-app://%1$s/signUpFragment</string> - <plurals name="days"> <item quantity="one">%1$d day</item> -- GitLab