diff --git a/app/src/main/java/com/anytypeio/anytype/navigation/Navigator.kt b/app/src/main/java/com/anytypeio/anytype/navigation/Navigator.kt index 43e5bcf273..cbee1f9ab5 100644 --- a/app/src/main/java/com/anytypeio/anytype/navigation/Navigator.kt +++ b/app/src/main/java/com/anytypeio/anytype/navigation/Navigator.kt @@ -136,7 +136,7 @@ class Navigator : AppNavigation { } override fun exitToVault() { - val popped = navController?.popBackStack(R.id.vaultScreen, false) + val popped = navController?.popBackStack(R.id.vaultScreen, true) if (popped == false) { navController?.navigate(R.id.vaultScreen) } diff --git a/app/src/main/java/com/anytypeio/anytype/ui/home/HomeScreenFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/home/HomeScreenFragment.kt index 8aaf94ee05..fbb907eabb 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/home/HomeScreenFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/home/HomeScreenFragment.kt @@ -34,6 +34,7 @@ import com.anytypeio.anytype.presentation.home.HomeScreenViewModel.Navigation import com.anytypeio.anytype.presentation.widgets.DropDownMenuAction import com.anytypeio.anytype.ui.base.navigation import com.anytypeio.anytype.ui.gallery.GalleryInstallationFragment +import com.anytypeio.anytype.ui.library.LibraryFragment import com.anytypeio.anytype.ui.multiplayer.RequestJoinSpaceFragment import com.anytypeio.anytype.ui.multiplayer.ShareSpaceFragment import com.anytypeio.anytype.ui.objects.creation.SelectObjectTypeFragment @@ -352,7 +353,14 @@ class HomeScreenFragment : BaseComposeFragment() { ) } is Navigation.OpenLibrary -> runCatching { - navigation().openLibrary(destination.space) + runCatching { + findNavController().navigate( + R.id.libraryFragment, + args = LibraryFragment.args(destination.space) + ) + }.onFailure { e -> + Timber.e(e, "Error while opening space library from widgets") + } } } } diff --git a/app/src/main/java/com/anytypeio/anytype/ui/library/LibraryFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/library/LibraryFragment.kt index a2e710595b..ba78afcda8 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/library/LibraryFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/library/LibraryFragment.kt @@ -39,7 +39,6 @@ import com.anytypeio.anytype.ui.relations.RelationCreateFromScratchForObjectFrag import com.anytypeio.anytype.ui.relations.RelationEditFragment import com.anytypeio.anytype.ui.sets.ObjectSetFragment import com.anytypeio.anytype.ui.settings.typography -import com.anytypeio.anytype.ui.spaces.SelectSpaceFragment import com.anytypeio.anytype.ui.types.create.CreateObjectTypeFragment import com.anytypeio.anytype.ui.types.create.REQUEST_CREATE_OBJECT import com.anytypeio.anytype.ui.types.edit.REQUEST_KEY_MODIFY_TYPE @@ -51,6 +50,7 @@ import com.anytypeio.anytype.ui.types.edit.TypeEditFragment import com.google.accompanist.pager.ExperimentalPagerApi import javax.inject.Inject import kotlinx.coroutines.FlowPreview +import timber.log.Timber class LibraryFragment : BaseComposeFragment() { @@ -162,11 +162,15 @@ class LibraryFragment : BaseComposeFragment() { ) ) } - is LibraryViewModel.Navigation.SelectSpace -> { - findNavController().navigate( - R.id.selectSpaceScreen, - args = SelectSpaceFragment.args(exitHomeWhenSpaceIsSelected = true) - ) + is LibraryViewModel.Navigation.ExitToVault -> { + runCatching { + findNavController().popBackStack( + R.id.vaultScreen, + true + ) + }.onFailure { e -> + Timber.e(e, "Error while exiting to vault from space library") + } } is LibraryViewModel.Navigation.OpenSetOrCollection -> { diff --git a/app/src/main/java/com/anytypeio/anytype/ui/splash/SplashFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/splash/SplashFragment.kt index bda9c505b6..5e1355946a 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/splash/SplashFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/splash/SplashFragment.kt @@ -81,21 +81,24 @@ class SplashFragment : BaseFragment(R.layout.fragment_spl private fun observe(command: SplashViewModel.Command) { when (command) { - is SplashViewModel.Command.NavigateToDashboard -> { - try { + is SplashViewModel.Command.NavigateToWidgets -> { + runCatching { findNavController().navigate( - R.id.action_splashScreen_to_homeScreen, + resId = R.id.actionOpenVaultFromSplash, args = HomeScreenFragment.args(command.deeplink) ) - } catch (e: Exception) { - Timber.e(e, "Error while opening dashboard from splash screen") - toast("Error while navigating to desktop: ${e.message}") + findNavController().navigate( + R.id.actionOpenSpaceFromVault, + args = HomeScreenFragment.args(command.deeplink) + ) + }.onFailure { + Timber.e(it, "Error while navigating to widgets from splash") } } is SplashViewModel.Command.NavigateToVault -> { try { findNavController().navigate( - R.id.action_splashScreen_to_vaultScreen, + resId = R.id.actionOpenVaultFromSplash, args = HomeScreenFragment.args(command.deeplink) ) } catch (e: Exception) { @@ -104,24 +107,34 @@ class SplashFragment : BaseFragment(R.layout.fragment_spl } } is SplashViewModel.Command.NavigateToObject -> { - findNavController().navigate(R.id.action_splashScreen_to_widgets) - findNavController().navigate( - R.id.objectNavigation, - EditorFragment.args( - ctx = command.id, - space = command.space + runCatching { + findNavController().navigate(R.id.actionOpenVaultFromSplash) + findNavController().navigate(R.id.actionOpenSpaceFromVault) + findNavController().navigate( + resId = R.id.objectNavigation, + args = EditorFragment.args( + ctx = command.id, + space = command.space + ) ) - ) + }.onFailure { + Timber.e(it, "Error while navigating to object from splash") + } } is SplashViewModel.Command.NavigateToObjectSet -> { - findNavController().navigate(R.id.action_splashScreen_to_widgets) - findNavController().navigate( - R.id.dataViewNavigation, - ObjectSetFragment.args( - ctx = command.id, - space = command.space + runCatching { + findNavController().navigate(R.id.actionOpenVaultFromSplash) + findNavController().navigate(R.id.actionOpenSpaceFromVault) + findNavController().navigate( + resId = R.id.dataViewNavigation, + args = ObjectSetFragment.args( + ctx = command.id, + space = command.space + ) ) - ) + }.onFailure { + Timber.e(it, "Error while navigating to set-or-collection from splash") + } } is SplashViewModel.Command.NavigateToAuthStart -> { val intent = activity?.intent diff --git a/app/src/main/java/com/anytypeio/anytype/ui/vault/VaultFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/vault/VaultFragment.kt index c580e77ffa..7324c0a4c9 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/vault/VaultFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/vault/VaultFragment.kt @@ -57,7 +57,7 @@ class VaultFragment : BaseComposeFragment() { when (command) { is Command.EnterSpaceHomeScreen -> { runCatching { - findNavController().navigate(R.id.openSpace) + findNavController().navigate(R.id.actionOpenSpaceFromVault) } } is Command.CreateNewSpace -> { diff --git a/app/src/main/java/com/anytypeio/anytype/ui/widgets/collection/CollectionFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/widgets/collection/CollectionFragment.kt index d043089a75..7950a9b2ed 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/widgets/collection/CollectionFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/widgets/collection/CollectionFragment.kt @@ -28,6 +28,7 @@ import com.anytypeio.anytype.ui.base.navigation import com.anytypeio.anytype.ui.dashboard.DeleteAlertFragment import com.anytypeio.anytype.ui.objects.creation.SelectObjectTypeFragment import javax.inject.Inject +import timber.log.Timber class CollectionFragment : BaseComposeFragment() { @@ -107,11 +108,14 @@ class CollectionFragment : BaseComposeFragment() { space = command.space ) is Command.Vault -> { - // DROID-2731 Fix navigation - findNavController().navigate( - R.id.vaultScreen, - args = null - ) + runCatching { + findNavController().popBackStack( + R.id.vaultScreen, + true + ) + }.onFailure { + Timber.e(it, "Error while exiting to vault") + } } } } diff --git a/app/src/main/res/navigation/graph.xml b/app/src/main/res/navigation/graph.xml index 6c256a7616..3770919399 100644 --- a/app/src/main/res/navigation/graph.xml +++ b/app/src/main/res/navigation/graph.xml @@ -197,7 +197,7 @@ android:id="@+id/vaultScreen" android:name="com.anytypeio.anytype.ui.vault.VaultFragment"> @@ -282,7 +282,7 @@ app:popUpTo="@+id/splashScreen" app:popUpToInclusive="true" /> navigate(Navigation.Back()) is LibraryEvent.BottomMenu.Search -> navigate(Navigation.Search()) is LibraryEvent.BottomMenu.CreateObject -> proceedWithCreateDoc() - is LibraryEvent.BottomMenu.OpenProfile -> navigate(Navigation.SelectSpace) + is LibraryEvent.BottomMenu.OpenProfile -> navigate(Navigation.ExitToVault) } } @@ -547,7 +547,7 @@ class LibraryViewModel( val view: LibraryView.MyRelationView ) : Navigation() - object SelectSpace: Navigation() + object ExitToVault: Navigation() class Back : Navigation() diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/splash/SplashViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/splash/SplashViewModel.kt index 78264240bd..b1fe20cf09 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/splash/SplashViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/splash/SplashViewModel.kt @@ -265,7 +265,7 @@ class SplashViewModel( private suspend fun proceedWithDashboardNavigation(deeplink: String? = null) { val space = getLastOpenedSpace.async(Unit).getOrNull() if (space != null) { - commands.emit(Command.NavigateToDashboard(deeplink)) + commands.emit(Command.NavigateToWidgets(deeplink)) } else { commands.emit(Command.NavigateToVault(deeplink)) } @@ -296,7 +296,7 @@ class SplashViewModel( } sealed class Command { - data class NavigateToDashboard(val deeplink: String? = null) : Command() + data class NavigateToWidgets(val deeplink: String? = null) : Command() data class NavigateToVault(val deeplink: String? = null) : Command() data object NavigateToAuthStart : Command() data object NavigateToMigration: Command()