mirror of
https://github.com/f-droid/fdroidclient.git
synced 2026-10-03 09:36:31 -04:00
Re-load updates after a new repo was added
This commit is contained in:
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user