diff --git a/app/src/main/java/com/aurora/store/data/helper/UpdateHelper.kt b/app/src/main/java/com/aurora/store/data/helper/UpdateHelper.kt index efb068daf..f1053a640 100644 --- a/app/src/main/java/com/aurora/store/data/helper/UpdateHelper.kt +++ b/app/src/main/java/com/aurora/store/data/helper/UpdateHelper.kt @@ -11,6 +11,7 @@ import androidx.work.OutOfQuotaPolicy import androidx.work.OneTimeWorkRequestBuilder import androidx.work.PeriodicWorkRequest import androidx.work.PeriodicWorkRequestBuilder +import androidx.work.WorkInfo import androidx.work.WorkManager import com.aurora.extensions.isMAndAbove import com.aurora.store.AuroraApp @@ -57,6 +58,11 @@ class UpdateHelper @Inject constructor( .map { list -> if (!isExtendedUpdateEnabled) list.filter { it.hasValidCert } else list } .stateIn(AuroraApp.scope, SharingStarted.WhileSubscribed(), null) + val isCheckingUpdates = WorkManager.getInstance(context) + .getWorkInfosForUniqueWorkFlow(EXPEDITED_UPDATE_WORKER) + .map { list -> !list.all { it.state.isFinished } } + .stateIn(AuroraApp.scope, SharingStarted.WhileSubscribed(), false) + /** * Deletes invalid updates from database and starts observing events */ diff --git a/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt index d8fd9e3af..265209ad1 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt @@ -19,16 +19,12 @@ package com.aurora.store.viewmodel.all -import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.aurora.store.data.room.update.Update import com.aurora.store.data.helper.UpdateHelper import com.aurora.store.data.helper.DownloadHelper import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import javax.inject.Inject @@ -37,25 +33,16 @@ class UpdatesViewModel @Inject constructor( private val updateHelper: UpdateHelper, private val downloadHelper: DownloadHelper, ) : ViewModel() { - private val TAG = UpdatesViewModel::class.java.simpleName var updateAllEnqueued: Boolean = false val downloadsList get() = downloadHelper.downloadsList val updates get() = updateHelper.updates - private val _fetchingUpdates = MutableStateFlow(false) - val fetchingUpdates = _fetchingUpdates.asStateFlow() + val fetchingUpdates = updateHelper.isCheckingUpdates fun fetchUpdates() { - _fetchingUpdates.value = true - viewModelScope.launch(Dispatchers.IO) { - try { - updateHelper.checkUpdatesNow() - } catch (exception: Exception) { - Log.d(TAG, "Failed to get updates", exception) - } - }.invokeOnCompletion { _fetchingUpdates.value = false } + updateHelper.checkUpdatesNow() } fun download(update: Update) {