From c22352dd0553e6893bb14e0941b6b8152a4565c6 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 24 Oct 2025 17:37:56 -0300 Subject: [PATCH] Fix first start detection --- next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt | 4 ++-- .../kotlin/org/fdroid/ui/discover/DiscoverPresenter.kt | 8 +++++--- .../kotlin/org/fdroid/ui/discover/DiscoverViewModel.kt | 3 +++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt b/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt index c9f75489e..f071cb5fd 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/Discover.kt @@ -11,9 +11,9 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi -import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton +import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar @@ -158,7 +158,7 @@ fun Discover( val listAll = AppListType.All( title = stringResource(R.string.app_list_all), ) - FilledTonalButton( + OutlinedButton( onClick = { onListTap(listAll) }, modifier = Modifier .align(End) diff --git a/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverPresenter.kt b/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverPresenter.kt index 375aed4be..a5ed1f129 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverPresenter.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverPresenter.kt @@ -5,6 +5,7 @@ import androidx.compose.runtime.collectAsState import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import org.fdroid.database.Repository +import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_LAST_UPDATE_CHECK import org.fdroid.ui.categories.CategoryGroup import org.fdroid.ui.categories.CategoryItem @@ -15,6 +16,7 @@ fun DiscoverPresenter( categoriesFlow: Flow>, repositoriesFlow: Flow>, searchResultsFlow: StateFlow, + lastRepoUpdate: Long, ): DiscoverModel { val newApps = newAppsFlow.collectAsState(null).value val recentlyUpdatedApps = recentlyUpdatedAppsFlow.collectAsState(null).value @@ -26,14 +28,14 @@ fun DiscoverPresenter( // So if we don't have those, we are still loading, have no enabled repo, or this is first start return if (recentlyUpdatedApps.isNullOrEmpty()) { val repositories = repositoriesFlow.collectAsState(null).value + val isFirstStart = lastRepoUpdate == PREF_DEFAULT_LAST_UPDATE_CHECK if (newApps == null && recentlyUpdatedApps == null) { - LoadingDiscoverModel(false) + // we don't know yet if this + LoadingDiscoverModel(isFirstStart) } else if (repositories?.all { !it.enabled } == true) { NoEnabledReposDiscoverModel } else { // apps are empty, if we have enabled repos assume this is first start (still loading) - // TODO use more reliable check for first start - val isFirstStart = repositories?.find { it.enabled } != null LoadingDiscoverModel(isFirstStart) } } else { diff --git a/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverViewModel.kt b/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverViewModel.kt index 1edc84c44..00ea6ae95 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverViewModel.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverViewModel.kt @@ -24,6 +24,7 @@ import org.fdroid.database.FDroidDatabase import org.fdroid.database.Repository import org.fdroid.download.getImageModel import org.fdroid.index.RepoManager +import org.fdroid.settings.SettingsManager import org.fdroid.ui.categories.CategoryItem import org.fdroid.ui.lists.AppListItem import org.fdroid.ui.utils.normalize @@ -40,6 +41,7 @@ class DiscoverViewModel @Inject constructor( savedStateHandle: SavedStateHandle, private val db: FDroidDatabase, updatesManager: UpdatesManager, + settingsManager: SettingsManager, private val repoManager: RepoManager, @param:IoDispatcher private val ioScope: CoroutineScope, ) : AndroidViewModel(app) { @@ -79,6 +81,7 @@ class DiscoverViewModel @Inject constructor( categoriesFlow = categories, repositoriesFlow = repoManager.repositoriesState, searchResultsFlow = searchResults, + lastRepoUpdate = settingsManager.lastRepoUpdate, ) }