Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 249d585d authored by Hasib Prince's avatar Hasib Prince
Browse files

update cache is updated when any app updated

parent 28647338
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -20,7 +20,12 @@ package foundation.e.apps.api.fused
import foundation.e.apps.api.fused.data.FusedApp

object UpdatesDao {
    var appsAwaitingForUpdate: List<FusedApp> = listOf()
    private var _appsAwaitingForUpdate: MutableList<FusedApp> = mutableListOf()
    var appsAwaitingForUpdate: List<FusedApp> = _appsAwaitingForUpdate

    fun hasAnyAppsForUpdate() = appsAwaitingForUpdate.isNotEmpty()
    fun addItemsForUpdate(appsNeedUpdate: List<FusedApp>) = _appsAwaitingForUpdate.addAll(appsNeedUpdate)

    fun hasAnyAppsForUpdate() = _appsAwaitingForUpdate.isNotEmpty()

    fun removeUpdateIfExists(packageName: String) = _appsAwaitingForUpdate.removeIf { it.package_name == packageName }
}
+11 −3
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import androidx.work.WorkerParameters
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import foundation.e.apps.R
import foundation.e.apps.api.fused.UpdatesDao
import foundation.e.apps.manager.database.DatabaseRepository
import foundation.e.apps.manager.database.fusedDownload.FusedDownload
import foundation.e.apps.manager.fused.FusedManagerRepository
@@ -192,9 +193,7 @@ class InstallAppWorker @AssistedInject constructor(
                Timber.d("===> doWork: Installing ${fusedDownload.name} ${fusedDownload.status}")
            }
            Status.INSTALLED, Status.INSTALLATION_ISSUE -> {
                isDownloading = false
                unlockMutex()
                Timber.d("===> doWork: Installed/Failed: ${fusedDownload.name} ${fusedDownload.status}")
                finishInstallation(fusedDownload, fusedDownload.status)
            }
            else -> {
                isDownloading = false
@@ -207,6 +206,15 @@ class InstallAppWorker @AssistedInject constructor(
        }
    }

    private fun finishInstallation(fusedDownload: FusedDownload, status: Status) {
        if (status == Status.INSTALLED) {
            UpdatesDao.removeUpdateIfExists(fusedDownload.packageName)
        }
        isDownloading = false
        unlockMutex()
        Timber.d("===> doWork: Installed/Failed: ${fusedDownload.name} ${fusedDownload.status}")
    }

    private fun unlockMutex() {
        if (mutex.isLocked) {
            mutex.unlock()
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ class UpdatesManagerRepository @Inject constructor(
        }
        return updatesManagerImpl.getUpdates(authData).run {
            val filteredApps = first.filter { !(!it.isFree && authData.isAnonymous) }
            UpdatesDao.appsAwaitingForUpdate = filteredApps
            UpdatesDao.addItemsForUpdate(filteredApps)
            Pair(filteredApps, this.second)
        }
    }