diff --git a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt index 741ec35d8..6360e421c 100644 --- a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionFragment.kt @@ -191,16 +191,24 @@ class CreateCollectionFragment : DialogFragment(), CoroutineScope { private fun handleBackPress(backPressFrom: SaveCollectionStep) { when (backPressFrom) { SaveCollectionStep.SelectTabs -> dismiss() - SaveCollectionStep.SelectCollection -> getManagedEmitter().onNext( - CollectionCreationChange.StepChanged(SaveCollectionStep.SelectTabs) - ) - SaveCollectionStep.NameCollection -> { - getManagedEmitter() - .onNext( - CollectionCreationChange.StepChanged( - viewModel.tabCollections.getStepForCollectionsSize() - ) + SaveCollectionStep.SelectCollection -> { + if (viewModel.tabs.size <= 1) dismiss() else { + getManagedEmitter().onNext( + CollectionCreationChange.StepChanged(SaveCollectionStep.SelectTabs) ) + } + } + SaveCollectionStep.NameCollection -> { + if (viewModel.tabCollections.isEmpty() && viewModel.tabs.size == 1) { + dismiss() + } else { + getManagedEmitter() + .onNext( + CollectionCreationChange.StepChanged( + viewModel.tabCollections.getBackStepForCollectionsSize() + ) + ) + } } SaveCollectionStep.RenameCollection -> { dismiss() diff --git a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionViewModel.kt b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionViewModel.kt index b90e26b21..d33a39c21 100644 --- a/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionViewModel.kt +++ b/app/src/main/java/org/mozilla/fenix/collections/CreateCollectionViewModel.kt @@ -16,7 +16,13 @@ class CreateCollectionViewModel : ViewModel() { var tabCollections = listOf() var selectedTabCollection: TabCollection? = null var snackbarAnchorView: View? = null + + fun getStepForTabsAndCollectionSize(): SaveCollectionStep = + if (tabs.size > 1) SaveCollectionStep.SelectTabs else tabCollections.getStepForCollectionsSize() } fun List.getStepForCollectionsSize(): SaveCollectionStep = if (isEmpty()) SaveCollectionStep.NameCollection else SaveCollectionStep.SelectCollection + +fun List.getBackStepForCollectionsSize(): SaveCollectionStep = + if (isEmpty()) SaveCollectionStep.SelectTabs else SaveCollectionStep.SelectCollection diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index afd1bab7f..e0b50b62a 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -414,7 +414,8 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { } is CollectionAction.AddTab -> { showCollectionCreationFragment( - selectedTabCollection = action.collection + selectedTabCollection = action.collection, + step = SaveCollectionStep.SelectTabs ) } is CollectionAction.Rename -> { @@ -611,7 +612,7 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { private fun showCollectionCreationFragment( selectedTabId: String? = null, selectedTabCollection: TabCollection? = null, - step: SaveCollectionStep = SaveCollectionStep.SelectTabs + step: SaveCollectionStep? = null ) { if (findNavController(this).currentDestination?.id == R.id.createCollectionFragment) return @@ -625,9 +626,10 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { val selectedTabs = tabs.find { tab -> tab.sessionId == selectedTabId } val selectedSet = if (selectedTabs == null) mutableSetOf() else mutableSetOf(selectedTabs) viewModel?.selectedTabs = selectedSet - viewModel?.saveCollectionStep = step viewModel?.tabCollections = requireComponents.core.tabCollectionStorage.cachedTabCollections.reversed() viewModel?.selectedTabCollection = selectedTabCollection + viewModel?.saveCollectionStep = + step ?: viewModel?.getStepForTabsAndCollectionSize() ?: SaveCollectionStep.SelectTabs view?.let { val directions = HomeFragmentDirections.actionHomeFragmentToCreateCollectionFragment()