You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iceraven-browser/app/src/main/java/org/mozilla/fenix/tabstray/browser/InactiveTabsAutoCloseDialog...

58 lines
1.9 KiB
Kotlin

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.tabstray.browser
import androidx.annotation.VisibleForTesting
import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.browser.tabstray.TabsTray
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.utils.Settings
import org.mozilla.fenix.GleanMetrics.TabsTray as TabsTrayMetrics
class InactiveTabsAutoCloseDialogController(
private val browserStore: BrowserStore,
private val settings: Settings,
private val tabFilter: (TabSessionState) -> Boolean,
private val tray: TabsTray,
) {
/**
* Dismiss the auto-close dialog.
*/
fun close() {
markDialogAsShown()
refreshInactiveTabsSection()
TabsTrayMetrics.autoCloseSeen.record(NoExtras())
TabsTrayMetrics.autoCloseDimissed.record(NoExtras())
}
/**
* Enable the auto-close feature with the after a month setting.
*/
fun enableAutoClosed() {
markDialogAsShown()
settings.closeTabsAfterOneMonth = true
settings.closeTabsAfterOneWeek = false
settings.closeTabsAfterOneDay = false
settings.manuallyCloseTabs = false
refreshInactiveTabsSection()
TabsTrayMetrics.autoCloseTurnOnClicked.record(NoExtras())
}
/**
* Marks the dialog as shown and to not be displayed again.
*/
private fun markDialogAsShown() {
settings.hasInactiveTabsAutoCloseDialogBeenDismissed = true
}
@VisibleForTesting
internal fun refreshInactiveTabsSection() {
val tabs = browserStore.state.tabs.filter(tabFilter)
tray.updateTabs(tabs, null, browserStore.state.selectedTabId)
}
}