From c29ae7736e6532b87ef4561d353942e9c855d9cb Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 17 Dec 2025 12:11:12 -0300 Subject: [PATCH] Don't load updates on very first start it may find apps we had installed before, but are not (yet) in any repo, so it will show issues already during initial repo fetch --- next/src/main/kotlin/org/fdroid/settings/SettingsManager.kt | 1 + .../main/kotlin/org/fdroid/ui/discover/DiscoverPresenter.kt | 4 +--- .../main/kotlin/org/fdroid/ui/discover/DiscoverViewModel.kt | 2 +- next/src/main/kotlin/org/fdroid/updates/UpdatesManager.kt | 5 ++++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/next/src/main/kotlin/org/fdroid/settings/SettingsManager.kt b/next/src/main/kotlin/org/fdroid/settings/SettingsManager.kt index f1b947d42..b283e9adb 100644 --- a/next/src/main/kotlin/org/fdroid/settings/SettingsManager.kt +++ b/next/src/main/kotlin/org/fdroid/settings/SettingsManager.kt @@ -78,6 +78,7 @@ class SettingsManager @Inject constructor( } private val _lastRepoUpdateFlow = MutableStateFlow(lastRepoUpdate) val lastRepoUpdateFlow = _lastRepoUpdateFlow.asStateFlow() + val isFirstStart get() = lastRepoUpdate <= PREF_DEFAULT_LAST_UPDATE_CHECK.toLong() /** * A set of package name for which we should not show app issues. 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 bd7a5f5a8..b8acc55f9 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverPresenter.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverPresenter.kt @@ -8,7 +8,6 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map import org.fdroid.database.Repository import org.fdroid.repo.RepoUpdateState -import org.fdroid.settings.SettingsConstants.PREF_DEFAULT_LAST_UPDATE_CHECK import org.fdroid.ui.categories.CategoryGroup import org.fdroid.ui.categories.CategoryItem @@ -20,7 +19,7 @@ fun DiscoverPresenter( categoriesFlow: Flow>, repositoriesFlow: Flow>, searchResultsFlow: StateFlow, - lastRepoUpdate: Long, + isFirstStart: Boolean, repoUpdateStateFlow: StateFlow, ): DiscoverModel { val newApps = newAppsFlow.collectAsState(null).value @@ -34,7 +33,6 @@ 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.toLong() if (repositories?.all { !it.enabled } == true) { NoEnabledReposDiscoverModel } else if (isFirstStart) { 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 181147bef..15fc1404f 100644 --- a/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverViewModel.kt +++ b/next/src/main/kotlin/org/fdroid/ui/discover/DiscoverViewModel.kt @@ -99,7 +99,7 @@ class DiscoverViewModel @Inject constructor( categoriesFlow = categories, repositoriesFlow = repoManager.repositoriesState, searchResultsFlow = searchResults, - lastRepoUpdate = settingsManager.lastRepoUpdate, + isFirstStart = settingsManager.isFirstStart, repoUpdateStateFlow = repoUpdateManager.repoUpdateState, ) } diff --git a/next/src/main/kotlin/org/fdroid/updates/UpdatesManager.kt b/next/src/main/kotlin/org/fdroid/updates/UpdatesManager.kt index 9bb8d6c47..4acdcf8b0 100644 --- a/next/src/main/kotlin/org/fdroid/updates/UpdatesManager.kt +++ b/next/src/main/kotlin/org/fdroid/updates/UpdatesManager.kt @@ -90,7 +90,8 @@ class UpdatesManager @Inject constructor( coroutineScope.launch { // refresh updates whenever installed apps change installedAppsCache.installedApps.collect { - loadUpdates(it) + // don't load updates on very first start or we may find issues too early + if (!settingsManager.isFirstStart) loadUpdates(it) } } } @@ -151,6 +152,8 @@ class UpdatesManager @Inject constructor( lastUpdated = -1, iconModel = PackageName(app.packageName, null), ) + }.also { + log.error { "ISSUE: $it" } } } _appsWithIssues.value = issueItems