Bug 1871098 - Integrate `TabTools` into the Debug Drawer

fenix/123.0
Noah Bond 4 months ago committed by mergify[bot]
parent 6497ad8f8a
commit 8af8a2a2d2

@ -284,7 +284,10 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
visibility = View.VISIBLE
setContent {
FenixOverlay()
FenixOverlay(
browserStore = components.core.store,
inactiveTabsEnabled = settings().inactiveTabsAreEnabled,
)
}
} else {
setContent {}

@ -5,12 +5,11 @@
package org.mozilla.fenix.debugsettings.navigation
import androidx.annotation.StringRes
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import mozilla.components.browser.state.store.BrowserStore
import org.mozilla.fenix.R
import org.mozilla.fenix.debugsettings.store.DebugDrawerAction
import org.mozilla.fenix.debugsettings.store.DebugDrawerStore
import org.mozilla.fenix.theme.FirefoxTheme
import org.mozilla.fenix.debugsettings.tabs.TabTools as TabToolsScreen
/**
@ -35,9 +34,13 @@ enum class DebugDrawerRoute(val route: String, @StringRes val title: Int) {
* Transforms the values of [DebugDrawerRoute] into a list of [DebugDrawerDestination]s.
*
* @param debugDrawerStore [DebugDrawerStore] used to dispatch navigation actions.
* @param browserStore [BrowserStore] used to add tabs in [TabToolsScreen].
* @param inactiveTabsEnabled Whether the inactive tabs feature is enabled.
*/
fun generateDebugDrawerDestinations(
debugDrawerStore: DebugDrawerStore,
browserStore: BrowserStore,
inactiveTabsEnabled: Boolean,
): List<DebugDrawerDestination> =
DebugDrawerRoute.values().map { debugDrawerRoute ->
val onClick: () -> Unit
@ -48,10 +51,9 @@ enum class DebugDrawerRoute(val route: String, @StringRes val title: Int) {
debugDrawerStore.dispatch(DebugDrawerAction.NavigateTo.TabTools)
}
content = {
Text(
text = "Tab tools",
color = FirefoxTheme.colors.textPrimary,
style = FirefoxTheme.typography.headline6,
TabToolsScreen(
store = browserStore,
inactiveTabsEnabled = inactiveTabsEnabled,
)
}
}

@ -9,6 +9,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.navigation.compose.rememberNavController
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.lib.state.ext.observeAsState
import org.mozilla.fenix.compose.annotation.LightDarkPreview
import org.mozilla.fenix.debugsettings.navigation.DebugDrawerRoute
@ -16,14 +17,21 @@ import org.mozilla.fenix.debugsettings.store.DebugDrawerAction
import org.mozilla.fenix.debugsettings.store.DebugDrawerNavigationMiddleware
import org.mozilla.fenix.debugsettings.store.DebugDrawerStore
import org.mozilla.fenix.debugsettings.store.DrawerStatus
import org.mozilla.fenix.debugsettings.tabs.TabTools
import org.mozilla.fenix.theme.FirefoxTheme
import org.mozilla.fenix.theme.Theme
/**
* Overlay for presenting Fenix-wide debugging content.
*
* @param browserStore [BrowserStore] used to access tab data for [TabTools].
* @param inactiveTabsEnabled Whether the inactive tabs feature is enabled.
*/
@Composable
fun FenixOverlay() {
fun FenixOverlay(
browserStore: BrowserStore,
inactiveTabsEnabled: Boolean,
) {
val navController = rememberNavController()
val coroutineScope = rememberCoroutineScope()
val debugDrawerStore = remember {
@ -39,6 +47,8 @@ fun FenixOverlay() {
val debugDrawerDestinations = remember {
DebugDrawerRoute.generateDebugDrawerDestinations(
debugDrawerStore = debugDrawerStore,
browserStore = browserStore,
inactiveTabsEnabled = inactiveTabsEnabled,
)
}
val drawerStatus by debugDrawerStore.observeAsState(initialValue = DrawerStatus.Closed) { state ->
@ -66,5 +76,8 @@ fun FenixOverlay() {
@LightDarkPreview
@Composable
private fun FenixOverlayPreview() {
FenixOverlay()
FenixOverlay(
browserStore = BrowserStore(),
inactiveTabsEnabled = true,
)
}

Loading…
Cancel
Save