parent
144335d1be
commit
7e46e71d00
|
@ -790,6 +790,7 @@ class BrowserFragment : Fragment(), BackHandler {
|
||||||
viewModel?.saveCollectionStep =
|
viewModel?.saveCollectionStep =
|
||||||
viewModel?.tabCollections?.getStepForCollectionsSize() ?: SaveCollectionStep.SelectCollection
|
viewModel?.tabCollections?.getStepForCollectionsSize() ?: SaveCollectionStep.SelectCollection
|
||||||
viewModel?.snackbarAnchorView = nestedScrollQuickAction
|
viewModel?.snackbarAnchorView = nestedScrollQuickAction
|
||||||
|
viewModel?.previousFragmentId = R.id.browserFragment
|
||||||
view?.let {
|
view?.let {
|
||||||
val directions = BrowserFragmentDirections.actionBrowserFragmentToCreateCollectionFragment()
|
val directions = BrowserFragmentDirections.actionBrowserFragmentToCreateCollectionFragment()
|
||||||
nav(R.id.browserFragment, directions)
|
nav(R.id.browserFragment, directions)
|
||||||
|
|
|
@ -19,6 +19,7 @@ import org.mozilla.fenix.FenixViewModelProvider
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.ext.components
|
import org.mozilla.fenix.ext.components
|
||||||
import org.mozilla.fenix.ext.requireComponents
|
import org.mozilla.fenix.ext.requireComponents
|
||||||
|
import org.mozilla.fenix.home.sessioncontrol.Tab
|
||||||
import org.mozilla.fenix.home.sessioncontrol.toSessionBundle
|
import org.mozilla.fenix.home.sessioncontrol.toSessionBundle
|
||||||
import org.mozilla.fenix.mvi.ActionBusFactory
|
import org.mozilla.fenix.mvi.ActionBusFactory
|
||||||
import org.mozilla.fenix.mvi.getAutoDisposeObservable
|
import org.mozilla.fenix.mvi.getAutoDisposeObservable
|
||||||
|
@ -121,6 +122,7 @@ class CreateCollectionFragment : DialogFragment() {
|
||||||
viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) {
|
viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) {
|
||||||
context.components.core.tabCollectionStorage.createCollection(it.name, sessionBundle)
|
context.components.core.tabCollectionStorage.createCollection(it.name, sessionBundle)
|
||||||
}
|
}
|
||||||
|
closeTabsIfNecessary(it.tabs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is CollectionCreationAction.SelectCollection -> {
|
is CollectionCreationAction.SelectCollection -> {
|
||||||
|
@ -131,6 +133,7 @@ class CreateCollectionFragment : DialogFragment() {
|
||||||
context.components.core.tabCollectionStorage
|
context.components.core.tabCollectionStorage
|
||||||
.addTabsToCollection(it.collection, sessionBundle)
|
.addTabsToCollection(it.collection, sessionBundle)
|
||||||
}
|
}
|
||||||
|
closeTabsIfNecessary(it.tabs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is CollectionCreationAction.RenameCollection -> {
|
is CollectionCreationAction.RenameCollection -> {
|
||||||
|
@ -170,4 +173,15 @@ class CreateCollectionFragment : DialogFragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun closeTabsIfNecessary(tabs: List<Tab>) {
|
||||||
|
// Only close the tabs if the user is not on the BrowserFragment
|
||||||
|
if (viewModel.previousFragmentId == R.id.browserFragment) { return }
|
||||||
|
|
||||||
|
tabs.forEach {
|
||||||
|
requireComponents.core.sessionManager.findSessionById(it.sessionId)?.let { session ->
|
||||||
|
requireComponents.useCases.tabsUseCases.removeTab.invoke(session)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ class CreateCollectionViewModel : ViewModel() {
|
||||||
var tabCollections = listOf<TabCollection>()
|
var tabCollections = listOf<TabCollection>()
|
||||||
var selectedTabCollection: TabCollection? = null
|
var selectedTabCollection: TabCollection? = null
|
||||||
var snackbarAnchorView: View? = null
|
var snackbarAnchorView: View? = null
|
||||||
|
var previousFragmentId: Int? = null
|
||||||
|
|
||||||
fun getStepForTabsAndCollectionSize(): SaveCollectionStep =
|
fun getStepForTabsAndCollectionSize(): SaveCollectionStep =
|
||||||
if (tabs.size > 1) SaveCollectionStep.SelectTabs else tabCollections.getStepForCollectionsSize()
|
if (tabs.size > 1) SaveCollectionStep.SelectTabs else tabCollections.getStepForCollectionsSize()
|
||||||
|
|
|
@ -702,6 +702,7 @@ class HomeFragment : Fragment(), AccountObserver {
|
||||||
viewModel?.selectedTabCollection = selectedTabCollection
|
viewModel?.selectedTabCollection = selectedTabCollection
|
||||||
viewModel?.saveCollectionStep =
|
viewModel?.saveCollectionStep =
|
||||||
step ?: viewModel?.getStepForTabsAndCollectionSize() ?: SaveCollectionStep.SelectTabs
|
step ?: viewModel?.getStepForTabsAndCollectionSize() ?: SaveCollectionStep.SelectTabs
|
||||||
|
viewModel?.previousFragmentId = R.id.homeFragment
|
||||||
|
|
||||||
// Only register the observer right before moving to collection creation
|
// Only register the observer right before moving to collection creation
|
||||||
requireComponents.core.tabCollectionStorage.register(collectionStorageObserver, this)
|
requireComponents.core.tabCollectionStorage.register(collectionStorageObserver, this)
|
||||||
|
|
Loading…
Reference in New Issue