Loading app/src/main/java/foundation/e/apps/api/fused/UpdatesDao.kt +7 −2 Original line number Diff line number Diff line Loading @@ -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 } } app/src/main/java/foundation/e/apps/manager/workmanager/InstallAppWorker.kt +11 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -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() Loading app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerRepository.kt +1 −1 Original line number Diff line number Diff line Loading @@ -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) } } Loading Loading
app/src/main/java/foundation/e/apps/api/fused/UpdatesDao.kt +7 −2 Original line number Diff line number Diff line Loading @@ -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 } }
app/src/main/java/foundation/e/apps/manager/workmanager/InstallAppWorker.kt +11 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -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() Loading
app/src/main/java/foundation/e/apps/updates/manager/UpdatesManagerRepository.kt +1 −1 Original line number Diff line number Diff line Loading @@ -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) } } Loading