From 8f009b60bf17e5756d70c902008dcc93b8e5f023 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 31 Mar 2026 16:43:04 -0300 Subject: [PATCH] Add option for compact bottom bar --- .../ui/screenshots/LocalizedScreenshotTest.kt | 11 ++- .../org/fdroid/settings/SettingsConstants.kt | 3 + .../org/fdroid/settings/SettingsManager.kt | 6 ++ app/src/main/kotlin/org/fdroid/ui/Main.kt | 11 +-- .../main/kotlin/org/fdroid/ui/MainContent.kt | 19 ++--- .../kotlin/org/fdroid/ui/MainPresenter.kt | 32 +++++++++ .../kotlin/org/fdroid/ui/MainViewModel.kt | 23 ++++-- .../org/fdroid/ui/navigation/BottomBar.kt | 70 ++++++++++++++----- .../kotlin/org/fdroid/ui/settings/Settings.kt | 19 ++++- app/src/main/res/values/strings.xml | 2 + .../kotlin/org/fdroid/ui/ScreenshotTest.kt | 11 ++- .../org/fdroid/ui/discover/DiscoverTest.kt | 47 +++++++++---- .../DiscoverSmallBottomBarTest_1def2e7f_0.png | 3 + 13 files changed, 192 insertions(+), 65 deletions(-) create mode 100644 app/src/main/kotlin/org/fdroid/ui/MainPresenter.kt create mode 100644 app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/discover/DiscoverTestKt/DiscoverSmallBottomBarTest_1def2e7f_0.png diff --git a/app/src/androidTest/java/org/fdroid/ui/screenshots/LocalizedScreenshotTest.kt b/app/src/androidTest/java/org/fdroid/ui/screenshots/LocalizedScreenshotTest.kt index 7d1150d42..914c2e66d 100644 --- a/app/src/androidTest/java/org/fdroid/ui/screenshots/LocalizedScreenshotTest.kt +++ b/app/src/androidTest/java/org/fdroid/ui/screenshots/LocalizedScreenshotTest.kt @@ -16,6 +16,7 @@ import kotlin.test.assertTrue import kotlin.test.fail import org.fdroid.BuildConfig.FLAVOR_variant import org.fdroid.ui.MainContent +import org.fdroid.ui.MainModel import org.fdroid.ui.navigation.NavigationKey import org.junit.Assume.assumeTrue import org.junit.Before @@ -61,12 +62,16 @@ abstract class LocalizedScreenshotTest(val localeName: String) { override = DeviceConfigurationOverride.Locales(locales = localeList) ) { MainContent( + model = + MainModel( + dynamicColors = false, + smallBottomBar = false, + numUpdates = numUpdates, + hasAppIssues = hasAppIssues, + ), isBigScreen = false, - dynamicColors = false, showBottomBar = showBottomBar, currentNavKey = currentNavKey, - numUpdates = numUpdates, - hasAppIssues = hasAppIssues, onNav = {}, content = content, ) diff --git a/app/src/main/kotlin/org/fdroid/settings/SettingsConstants.kt b/app/src/main/kotlin/org/fdroid/settings/SettingsConstants.kt index 531b90735..8eb181a7b 100644 --- a/app/src/main/kotlin/org/fdroid/settings/SettingsConstants.kt +++ b/app/src/main/kotlin/org/fdroid/settings/SettingsConstants.kt @@ -17,6 +17,9 @@ object SettingsConstants { const val PREF_KEY_DYNAMIC_COLORS = "dynamicColors" const val PREF_DEFAULT_DYNAMIC_COLORS = false + const val PREF_KEY_SMALL_BOTTOM_BAR = "smallBottomBar" + const val PREF_DEFAULT_SMALL_BOTTOM_BAR = false + enum class AutoUpdateValues { OnlyWifi, Always, diff --git a/app/src/main/kotlin/org/fdroid/settings/SettingsManager.kt b/app/src/main/kotlin/org/fdroid/settings/SettingsManager.kt index 8aaa35e71..dff3e549d 100644 --- a/app/src/main/kotlin/org/fdroid/settings/SettingsManager.kt +++ b/app/src/main/kotlin/org/fdroid/settings/SettingsManager.kt @@ -33,6 +33,7 @@ import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_PREVENT_SCREENSHOTS import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_PROXY import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_REPO_UPDATES import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_SHOW_INCOMPATIBLE +import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_SMALL_BOTTOM_BAR import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_THEME import org.fdroid.settings.SettingsConstants.PREF_DNS_CACHE import org.fdroid.settings.SettingsConstants.PREF_DNS_CACHE_DEFAULT @@ -49,6 +50,7 @@ import org.fdroid.settings.SettingsConstants.PREF_KEY_PREVENT_SCREENSHOTS import org.fdroid.settings.SettingsConstants.PREF_KEY_PROXY import org.fdroid.settings.SettingsConstants.PREF_KEY_REPO_UPDATES import org.fdroid.settings.SettingsConstants.PREF_KEY_SHOW_INCOMPATIBLE +import org.fdroid.settings.SettingsConstants.PREF_KEY_SMALL_BOTTOM_BAR import org.fdroid.settings.SettingsConstants.PREF_KEY_THEME import org.fdroid.settings.SettingsConstants.PREF_USE_DNS_CACHE import org.fdroid.settings.SettingsConstants.PREF_USE_DNS_CACHE_DEFAULT @@ -77,6 +79,10 @@ class SettingsManager @Inject constructor(@param:ApplicationContext private val prefsFlow .map { it.get(PREF_KEY_DYNAMIC_COLORS) ?: PREF_DEFAULT_DYNAMIC_COLORS } .distinctUntilChanged() + val smallBottomBarFlow: Flow = + prefsFlow + .map { it.get(PREF_KEY_SMALL_BOTTOM_BAR) ?: PREF_DEFAULT_SMALL_BOTTOM_BAR } + .distinctUntilChanged() val repoUpdates get() = prefs.getString(PREF_KEY_REPO_UPDATES, PREF_DEFAULT_REPO_UPDATES).toAutoUpdateValue() diff --git a/app/src/main/kotlin/org/fdroid/ui/Main.kt b/app/src/main/kotlin/org/fdroid/ui/Main.kt index 79216b96b..13a8207ae 100644 --- a/app/src/main/kotlin/org/fdroid/ui/Main.kt +++ b/app/src/main/kotlin/org/fdroid/ui/Main.kt @@ -17,7 +17,6 @@ import androidx.navigation3.runtime.NavEntry import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.entryProvider import androidx.navigation3.ui.NavDisplay -import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_DYNAMIC_COLORS import org.fdroid.ui.apps.myAppsEntry import org.fdroid.ui.details.NoAppSelected import org.fdroid.ui.details.appDetailsEntry @@ -85,6 +84,7 @@ fun Main(onListeningForIntent: () -> Unit = {}) { val viewModel = hiltViewModel() Settings( model = viewModel.model, + isBigScreen = isBigScreen, onSaveLogcat = { viewModel.onSaveLogcat(it) navigator.goBack() @@ -116,17 +116,12 @@ fun Main(onListeningForIntent: () -> Unit = {}) { } val showBottomBar = !isBigScreen && navigator.last is MainNavKey val viewModel = hiltViewModel() - val dynamicColors = - viewModel.dynamicColors.collectAsStateWithLifecycle(PREF_DEFAULT_DYNAMIC_COLORS).value - val numUpdates = viewModel.numUpdates.collectAsStateWithLifecycle().value - val hasAppIssues = viewModel.hasAppIssues.collectAsStateWithLifecycle(false).value + val mainModel = viewModel.mainModel.collectAsStateWithLifecycle().value MainContent( + model = mainModel, isBigScreen = isBigScreen, - dynamicColors = dynamicColors, showBottomBar = showBottomBar, currentNavKey = navigationState.topLevelRoute, - numUpdates = numUpdates, - hasAppIssues = hasAppIssues, onNav = { navKey -> navigator.navigate(navKey) }, ) { modifier -> NavDisplay( diff --git a/app/src/main/kotlin/org/fdroid/ui/MainContent.kt b/app/src/main/kotlin/org/fdroid/ui/MainContent.kt index b63710b7c..ee52b65c8 100644 --- a/app/src/main/kotlin/org/fdroid/ui/MainContent.kt +++ b/app/src/main/kotlin/org/fdroid/ui/MainContent.kt @@ -19,28 +19,19 @@ import org.fdroid.ui.navigation.NavigationRail @Composable fun MainContent( + model: MainModel, isBigScreen: Boolean, - dynamicColors: Boolean, showBottomBar: Boolean, currentNavKey: NavKey, - numUpdates: Int, - hasAppIssues: Boolean, onNav: (MainNavKey) -> Unit, content: @Composable (Modifier) -> Unit, ) = - FDroidContent(dynamicColors = dynamicColors) { + FDroidContent(dynamicColors = model.dynamicColors) { HintHost { Scaffold( bottomBar = if (showBottomBar) { - { - BottomBar( - numUpdates = numUpdates, - hasIssues = hasAppIssues, - currentNavKey = currentNavKey, - onNav = onNav, - ) - } + { BottomBar(model = model, currentNavKey = currentNavKey, onNav = onNav) } } else { {} } @@ -49,8 +40,8 @@ fun MainContent( // show nav rail only on big screen (at least two partitions) if (isBigScreen) NavigationRail( - numUpdates = numUpdates, - hasIssues = hasAppIssues, + numUpdates = model.numUpdates, + hasIssues = model.hasAppIssues, currentNavKey = currentNavKey, onNav = onNav, ) diff --git a/app/src/main/kotlin/org/fdroid/ui/MainPresenter.kt b/app/src/main/kotlin/org/fdroid/ui/MainPresenter.kt new file mode 100644 index 000000000..086624c55 --- /dev/null +++ b/app/src/main/kotlin/org/fdroid/ui/MainPresenter.kt @@ -0,0 +1,32 @@ +package org.fdroid.ui + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.StateFlow +import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_DYNAMIC_COLORS +import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_SMALL_BOTTOM_BAR +import org.fdroid.ui.apps.AppWithIssueItem + +data class MainModel( + val dynamicColors: Boolean, + val smallBottomBar: Boolean, + val numUpdates: Int, + val hasAppIssues: Boolean, +) + +@Composable +fun MainPresenter( + dynamicColorsFlow: Flow, + smallBottomBarFlow: Flow, + numUpdatesFlow: StateFlow, + appsWithIssuesFlow: StateFlow?>, +): MainModel { + return MainModel( + dynamicColors = dynamicColorsFlow.collectAsState(initial = PREF_DEFAULT_DYNAMIC_COLORS).value, + smallBottomBar = + smallBottomBarFlow.collectAsState(initial = PREF_DEFAULT_SMALL_BOTTOM_BAR).value, + numUpdates = numUpdatesFlow.collectAsState().value, + hasAppIssues = !appsWithIssuesFlow.collectAsState().value.isNullOrEmpty(), + ) +} diff --git a/app/src/main/kotlin/org/fdroid/ui/MainViewModel.kt b/app/src/main/kotlin/org/fdroid/ui/MainViewModel.kt index 10c47fa77..a8ffc800f 100644 --- a/app/src/main/kotlin/org/fdroid/ui/MainViewModel.kt +++ b/app/src/main/kotlin/org/fdroid/ui/MainViewModel.kt @@ -1,12 +1,16 @@ package org.fdroid.ui import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import app.cash.molecule.AndroidUiDispatcher +import app.cash.molecule.RecompositionMode.ContextClock +import app.cash.molecule.launchMolecule import dagger.hilt.android.lifecycle.HiltViewModel import java.util.concurrent.TimeUnit.DAYS import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch import mu.KotlinLogging import org.fdroid.database.FDroidDatabase @@ -23,11 +27,22 @@ constructor( updatesManager: UpdatesManager, @param:IoDispatcher val coroutineScope: CoroutineScope, ) : ViewModel() { - val dynamicColors = settingsManager.dynamicColorFlow - val numUpdates = updatesManager.numUpdates - val hasAppIssues = updatesManager.appsWithIssues.map { !it.isNullOrEmpty() } private val log = KotlinLogging.logger {} + private val moleculeScope = + CoroutineScope(viewModelScope.coroutineContext + AndroidUiDispatcher.Main) + + val mainModel: StateFlow by + lazy(LazyThreadSafetyMode.NONE) { + moleculeScope.launchMolecule(mode = ContextClock) { + MainPresenter( + dynamicColorsFlow = settingsManager.dynamicColorFlow, + smallBottomBarFlow = settingsManager.smallBottomBarFlow, + numUpdatesFlow = updatesManager.numUpdates, + appsWithIssuesFlow = updatesManager.appsWithIssues, + ) + } + } init { // only check for Fts integrity once a day, because it is an expensive operation diff --git a/app/src/main/kotlin/org/fdroid/ui/navigation/BottomBar.kt b/app/src/main/kotlin/org/fdroid/ui/navigation/BottomBar.kt index e2f1eec62..0c6937a08 100644 --- a/app/src/main/kotlin/org/fdroid/ui/navigation/BottomBar.kt +++ b/app/src/main/kotlin/org/fdroid/ui/navigation/BottomBar.kt @@ -1,6 +1,11 @@ package org.fdroid.ui.navigation +import androidx.compose.foundation.layout.Arrangement.spacedBy +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.navigationBars import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Error import androidx.compose.material3.Badge @@ -17,28 +22,34 @@ import androidx.compose.material3.Text import androidx.compose.material3.contentColorFor import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalResources import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp import androidx.navigation3.runtime.NavKey import org.fdroid.R import org.fdroid.ui.FDroidContent +import org.fdroid.ui.MainModel @Composable -fun BottomBar( - numUpdates: Int, - hasIssues: Boolean, - currentNavKey: NavKey, - onNav: (MainNavKey) -> Unit, -) { +fun BottomBar(model: MainModel, currentNavKey: NavKey, onNav: (MainNavKey) -> Unit) { val res = LocalResources.current - NavigationBar { + val bottom = with(LocalDensity.current) { WindowInsets.navigationBars.getBottom(this).toDp() } + NavigationBar( + modifier = if (model.smallBottomBar) Modifier.heightIn(max = 56.dp + bottom) else Modifier + ) { topLevelRoutes.forEach { dest -> NavigationBarItem( - icon = { NavIcon(dest, numUpdates, hasIssues) }, - label = { Text(stringResource(dest.label)) }, + icon = { NavIcon(dest, model.numUpdates, model.hasAppIssues) }, + label = + if (model.smallBottomBar) { + null + } else { + { Text(stringResource(dest.label)) } + }, selected = dest == currentNavKey, colors = NavigationBarItemDefaults.colors( @@ -50,10 +61,10 @@ fun BottomBar( modifier = Modifier.semantics { if (dest == NavigationKey.MyApps) { - if (numUpdates > 0) { + if (model.numUpdates > 0) { stateDescription = res.getString(R.string.notification_channel_updates_available_title) - } else if (hasIssues) { + } else if (model.hasAppIssues) { stateDescription = res.getString(R.string.my_apps_header_apps_with_issue) } } @@ -133,12 +144,21 @@ private fun Preview() { currentNavKey = NavigationKey.Discover, onNav = {}, ) - BottomBar( - numUpdates = 3, - hasIssues = false, - currentNavKey = NavigationKey.Discover, - onNav = {}, - ) + Column(verticalArrangement = spacedBy(16.dp)) { + val model = + MainModel( + dynamicColors = false, + smallBottomBar = false, + numUpdates = 3, + hasAppIssues = false, + ) + BottomBar(model = model, currentNavKey = NavigationKey.Discover, onNav = {}) + BottomBar( + model = model.copy(smallBottomBar = true), + currentNavKey = NavigationKey.Discover, + onNav = {}, + ) + } } } } @@ -154,7 +174,21 @@ private fun PreviewIssues() { currentNavKey = NavigationKey.MyApps, onNav = {}, ) - BottomBar(numUpdates = 0, hasIssues = true, currentNavKey = NavigationKey.MyApps, onNav = {}) + Column(verticalArrangement = spacedBy(16.dp)) { + val model = + MainModel( + dynamicColors = true, + smallBottomBar = false, + numUpdates = 0, + hasAppIssues = true, + ) + BottomBar(model = model, currentNavKey = NavigationKey.MyApps, onNav = {}) + BottomBar( + model = model.copy(smallBottomBar = true), + currentNavKey = NavigationKey.MyApps, + onNav = {}, + ) + } } } } diff --git a/app/src/main/kotlin/org/fdroid/ui/settings/Settings.kt b/app/src/main/kotlin/org/fdroid/ui/settings/Settings.kt index c67a60e2b..50e2f1e37 100644 --- a/app/src/main/kotlin/org/fdroid/ui/settings/Settings.kt +++ b/app/src/main/kotlin/org/fdroid/ui/settings/Settings.kt @@ -65,6 +65,7 @@ import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_MIRROR_CHOOSER import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_PREVENT_SCREENSHOTS import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_PROXY import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_REPO_UPDATES +import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_SMALL_BOTTOM_BAR import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_THEME import org.fdroid.settings.SettingsConstants.PREF_KEY_AUTO_UPDATES import org.fdroid.settings.SettingsConstants.PREF_KEY_DYNAMIC_COLORS @@ -72,6 +73,7 @@ import org.fdroid.settings.SettingsConstants.PREF_KEY_MIRROR_CHOOSER import org.fdroid.settings.SettingsConstants.PREF_KEY_PREVENT_SCREENSHOTS import org.fdroid.settings.SettingsConstants.PREF_KEY_PROXY import org.fdroid.settings.SettingsConstants.PREF_KEY_REPO_UPDATES +import org.fdroid.settings.SettingsConstants.PREF_KEY_SMALL_BOTTOM_BAR import org.fdroid.settings.SettingsConstants.PREF_KEY_THEME import org.fdroid.settings.SettingsConstants.PREF_USE_DNS_CACHE import org.fdroid.settings.SettingsConstants.PREF_USE_DNS_CACHE_DEFAULT @@ -85,7 +87,12 @@ import org.fdroid.utils.getLogName @Composable @OptIn(ExperimentalMaterial3Api::class) -fun Settings(model: SettingsModel, onSaveLogcat: (Uri?) -> Unit, onBackClicked: () -> Unit) { +fun Settings( + model: SettingsModel, + isBigScreen: Boolean, + onSaveLogcat: (Uri?) -> Unit, + onBackClicked: () -> Unit, +) { Scaffold( topBar = { TopAppBar( @@ -186,6 +193,14 @@ fun Settings(model: SettingsModel, onSaveLogcat: (Uri?) -> Unit, onBackClicked: context.startActivitySafe(intent) }, ) + if (!isBigScreen) + switchPreference( + key = PREF_KEY_SMALL_BOTTOM_BAR, + defaultValue = PREF_DEFAULT_SMALL_BOTTOM_BAR, + icon = {}, + title = { Text(stringResource(R.string.pref_compact_bottom_bar_title)) }, + summary = { Text(stringResource(R.string.pref_compact_bottom_bar_summary)) }, + ) preferenceCategory( key = "pref_category_updates", title = { Text(stringResource(R.string.updates)) }, @@ -389,6 +404,6 @@ fun SettingsPreview() { nextRepoUpdateFlow = MutableStateFlow(Long.MAX_VALUE), nextAppUpdateFlow = MutableStateFlow(currentTimeMillis() - HOURS.toMillis(12)), ) - Settings(model, {}, {}) + Settings(model, true, {}, {}) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index adbcd49d3..2e658e42a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -166,6 +166,8 @@ Use system colors Apply dynamic colors from your system settings Open system language settings + Compact navigation bar + Reduces size and hides labels of navigation bottom bar Only on Wi-Fi Always (even on mobile data) Never diff --git a/app/src/screenshotTest/kotlin/org/fdroid/ui/ScreenshotTest.kt b/app/src/screenshotTest/kotlin/org/fdroid/ui/ScreenshotTest.kt index e4b5cc975..5fb262bf5 100644 --- a/app/src/screenshotTest/kotlin/org/fdroid/ui/ScreenshotTest.kt +++ b/app/src/screenshotTest/kotlin/org/fdroid/ui/ScreenshotTest.kt @@ -8,18 +8,23 @@ import org.fdroid.ui.navigation.NavigationKey @Composable fun ScreenshotTest( showBottomBar: Boolean = true, + smallBottomBar: Boolean = false, currentNavKey: NavKey = NavigationKey.Discover, numUpdates: Int = 3, hasAppIssues: Boolean = true, content: @Composable (Modifier) -> Unit, ) { MainContent( + model = + MainModel( + dynamicColors = false, + smallBottomBar = smallBottomBar, + numUpdates = numUpdates, + hasAppIssues = hasAppIssues, + ), isBigScreen = false, - dynamicColors = false, showBottomBar = showBottomBar, currentNavKey = currentNavKey, - numUpdates = numUpdates, - hasAppIssues = hasAppIssues, onNav = {}, content = content, ) diff --git a/app/src/screenshotTest/kotlin/org/fdroid/ui/discover/DiscoverTest.kt b/app/src/screenshotTest/kotlin/org/fdroid/ui/discover/DiscoverTest.kt index 547c56277..c610a20b0 100644 --- a/app/src/screenshotTest/kotlin/org/fdroid/ui/discover/DiscoverTest.kt +++ b/app/src/screenshotTest/kotlin/org/fdroid/ui/discover/DiscoverTest.kt @@ -1,6 +1,7 @@ package org.fdroid.ui.discover -import androidx.compose.foundation.text.input.rememberTextFieldState +import android.content.res.Configuration +import androidx.compose.foundation.text.input.TextFieldState import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview import com.android.tools.screenshot.PreviewTest @@ -37,6 +38,30 @@ private fun DiscoverNoEnabledReposTest() = ScreenshotTest { @PreviewTest @Preview(showBackground = true, showSystemUi = true) private fun DiscoverTest() { + ScreenshotTest { + Discover(discoverModel = getLoadedModel(), onListTap = {}, onAppTap = {}, onNav = {}) + } +} + +@Composable +@PreviewTest +@Preview( + showBackground = true, + showSystemUi = true, + uiMode = Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL, +) +private fun DiscoverSmallBottomBarTest() { + ScreenshotTest(smallBottomBar = true) { + Discover( + discoverModel = getLoadedModel().copy(hasRepoIssues = false), + onListTap = {}, + onAppTap = {}, + onNav = {}, + ) + } +} + +private fun getLoadedModel(): LoadedDiscoverModel { val newApps = listOf( AppDiscoverItem( @@ -102,16 +127,12 @@ private fun DiscoverTest() { CategoryItem(id = "Phone & SMS", name = "Phone & SMS"), ) ) - ScreenshotTest { - val model = - LoadedDiscoverModel( - newApps = newApps, - recentlyUpdatedApps = recentlyUpdatedApps, - mostDownloadedApps = mostDownloadedApps, - categories = categories, - searchTextFieldState = rememberTextFieldState(), - hasRepoIssues = true, - ) - Discover(discoverModel = model, onListTap = {}, onAppTap = {}, onNav = {}) - } + return LoadedDiscoverModel( + newApps = newApps, + recentlyUpdatedApps = recentlyUpdatedApps, + mostDownloadedApps = mostDownloadedApps, + categories = categories, + searchTextFieldState = TextFieldState(), + hasRepoIssues = true, + ) } diff --git a/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/discover/DiscoverTestKt/DiscoverSmallBottomBarTest_1def2e7f_0.png b/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/discover/DiscoverTestKt/DiscoverSmallBottomBarTest_1def2e7f_0.png new file mode 100644 index 000000000..f3396d216 --- /dev/null +++ b/app/src/screenshotTestBasicDefaultDebug/reference/org/fdroid/ui/discover/DiscoverTestKt/DiscoverSmallBottomBarTest_1def2e7f_0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60ae81af88e21da8a7feb43d9cbf111106c715789a93295e9c5d7dc05a627547 +size 156780