Re-load updates after a new repo was added

This commit is contained in:
Torsten Grote committed 2026-02-25 16:17:24 -03:00
1 parent 2f725fb54f
commit dce5988541
1 file changed
+26 -1
@@ -4,12 +4,22 @@ import android.app.Application
import androidx.core.net.toUri
import androidx.lifecycle.AndroidViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import mu.KotlinLogging
import org.fdroid.download.NetworkMonitor
import org.fdroid.index.RepoManager
import org.fdroid.repo.AddRepoError
import org.fdroid.repo.AddRepoState
import org.fdroid.repo.Added
import org.fdroid.repo.Adding
import org.fdroid.repo.Fetching
import org.fdroid.repo.None
import org.fdroid.settings.SettingsManager
import org.fdroid.updates.UpdatesManager
import org.fdroid.utils.IoDispatcher
import javax.inject.Inject
@HiltViewModel
@@ -18,6 +28,8 @@ class AddRepoViewModel @Inject constructor(
networkMonitor: NetworkMonitor,
settingsManager: SettingsManager,
private val repoManager: RepoManager,
private val updateManager: UpdatesManager,
@param:IoDispatcher private val ioScope: CoroutineScope,
) : AndroidViewModel(app) {
private val log = KotlinLogging.logger { }
@@ -43,6 +55,19 @@ class AddRepoViewModel @Inject constructor(
fun addFetchedRepository() {
log.info { "addFetchedRepository()" }
repoManager.addFetchedRepository()
ioScope.launch {
repoManager.addFetchedRepository()
// wait for repo to get added, so we can load updates afterward
repoManager.addRepoState.collect {
when (it) {
is Fetching, Adding, None -> {}
is Added -> {
updateManager.loadUpdates().join()
cancel()
}
is AddRepoError -> cancel()
}
}
}
}
}