diff --git a/app/src/main/java/org/mozilla/fenix/components/TabCollectionStorage.kt b/app/src/main/java/org/mozilla/fenix/components/TabCollectionStorage.kt index ba6af9b1e..6fe835e20 100644 --- a/app/src/main/java/org/mozilla/fenix/components/TabCollectionStorage.kt +++ b/app/src/main/java/org/mozilla/fenix/components/TabCollectionStorage.kt @@ -84,11 +84,7 @@ class TabCollectionStorage( } fun removeTabFromCollection(tabCollection: TabCollection, tab: Tab) { - if (tabCollection.tabs.size == 1) { - removeCollection(tabCollection) - } else { - collectionStorage.removeTabFromCollection(tabCollection, tab) - } + collectionStorage.removeTabFromCollection(tabCollection, tab) } fun renameCollection(tabCollection: TabCollection, title: String) { 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 ba90a1cf5..0b6531b43 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -470,11 +470,10 @@ class HomeFragment : Fragment() { } } - private fun showDeleteCollectionPrompt(tabCollection: TabCollection) { + private fun showDeleteCollectionPrompt(tabCollection: TabCollection, title: String?, message: String) { val context = context ?: return AlertDialog.Builder(context).apply { - val message = - context.getString(R.string.tab_collection_dialog_message, tabCollection.title) + setTitle(title) setMessage(message) setNegativeButton(R.string.tab_collection_dialog_negative) { dialog: DialogInterface, _ -> dialog.cancel() diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt index aa0744459..74b4e1bd0 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt @@ -136,7 +136,7 @@ class DefaultSessionControlController( private val getListOfTabs: () -> List, private val hideOnboarding: () -> Unit, private val registerCollectionStorageObserver: () -> Unit, - private val showDeleteCollectionPrompt: (tabCollection: TabCollection) -> Unit, + private val showDeleteCollectionPrompt: (tabCollection: TabCollection, title: String?, message: String) -> Unit, private val openSettingsScreen: () -> Unit, private val openWhatsNewLink: () -> Unit, private val openPrivacyNotice: () -> Unit, @@ -196,8 +196,14 @@ class DefaultSessionControlController( override fun handleCollectionRemoveTab(collection: TabCollection, tab: ComponentTab) { metrics.track(Event.CollectionTabRemoved) - viewLifecycleScope.launch(Dispatchers.IO) { - tabCollectionStorage.removeTabFromCollection(collection, tab) + if (collection.tabs.size == 1) { + val title = activity.resources.getString(R.string.delete_tab_and_collection_dialog_title, collection.title) + val message = activity.resources.getString(R.string.delete_tab_and_collection_dialog_message) + showDeleteCollectionPrompt(collection, title, message) + } else { + viewLifecycleScope.launch(Dispatchers.IO) { + tabCollectionStorage.removeTabFromCollection(collection, tab) + } } } @@ -207,7 +213,8 @@ class DefaultSessionControlController( } override fun handleDeleteCollectionTapped(collection: TabCollection) { - showDeleteCollectionPrompt(collection) + val message = activity.resources.getString(R.string.tab_collection_dialog_message, collection.title) + showDeleteCollectionPrompt(collection, null, message) } override fun handleOpenInPrivateTabClicked(topSite: TopSite) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fefc02c2f..738b529bc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -819,6 +819,10 @@ DENY Are you sure you want to delete %1$s? + + Deleting this tab will delete the entire collection. You can create new collections at any time. + + Delete collection %1$s? Delete