Fix first start detection

This commit is contained in:
Torsten Grote
2025-10-24 17:37:56 -03:00
parent 08e1d04b7a
commit c22352dd05
3 changed files with 10 additions and 5 deletions

View File

@@ -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)

View File

@@ -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<List<CategoryItem>>,
repositoriesFlow: Flow<List<Repository>>,
searchResultsFlow: StateFlow<SearchResults?>,
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 {

View File

@@ -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,
)
}