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

Commit bf5acf93 authored by Abhishek Aggarwal's avatar Abhishek Aggarwal
Browse files

Applounge: Proper pass context to worker

parent ea99f7fa
Loading
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ import foundation.e.apps.di.qualifiers.IoCoroutineScope
import foundation.e.apps.install.pkg.AppLoungePackageManager
import foundation.e.apps.install.pkg.PkgManagerBR
import foundation.e.apps.install.updates.UpdatesWorkManager
import foundation.e.apps.install.workmanager.InstallWorkManager
import foundation.e.apps.ui.setup.tos.TOS_VERSION
import foundation.e.apps.utils.CustomUncaughtExceptionHandler
import foundation.e.lib.telemetry.Telemetry
@@ -86,7 +85,6 @@ class AppLoungeApplication : Application(), Configuration.Provider {

        Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler)

        InstallWorkManager.context = this
        // Register broadcast receiver for package manager
        registerReceiver(pkgManagerBR, appLoungePackageManager.getFilter(), RECEIVER_EXPORTED)

+3 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package foundation.e.apps.data.install

import android.content.Context
import androidx.lifecycle.LiveData
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.OpenForTesting
import foundation.e.apps.data.Constants.MIN_VALID_RATING
import foundation.e.apps.data.application.data.Application
@@ -36,6 +37,7 @@ private const val PERCENTAGE_MULTIPLIER = 100
@Singleton
@OpenForTesting
class AppManagerWrapper @Inject constructor(
    @ApplicationContext private val context: Context,
    private val appManager: AppManager,
    private val fDroidRepository: FDroidRepository
) {
@@ -79,6 +81,7 @@ class AppManagerWrapper @Inject constructor(
        appInstall: AppInstall
    ) =
        existingAppInstall != null && InstallWorkManager.checkWorkIsAlreadyAvailable(
            context,
            appInstall.id
        )

+1 −1
Original line number Diff line number Diff line
@@ -141,7 +141,7 @@ class AppInstallProcessor @Inject constructor(
            if (!canEnqueue(appInstall)) return false

            appInstallComponents.appManagerWrapper.updateAwaiting(appInstall)
            InstallWorkManager.enqueueWork(appInstall, isAnUpdate)
            InstallWorkManager.enqueueWork(context, appInstall, isAnUpdate)
            true
        } catch (e: Exception) {
            Timber.e(
+4 −5
Original line number Diff line number Diff line
package foundation.e.apps.install.workmanager

import android.app.Application
import android.content.Context
import androidx.work.Data
import androidx.work.ExistingWorkPolicy
import androidx.work.OneTimeWorkRequestBuilder
@@ -11,9 +11,8 @@ import java.lang.Exception

object InstallWorkManager {
    const val INSTALL_WORK_NAME = "APP_LOUNGE_INSTALL_APP"
    lateinit var context: Application

    fun enqueueWork(appInstall: AppInstall, isUpdateWork: Boolean = false) {
    fun enqueueWork(context: Context, appInstall: AppInstall, isUpdateWork: Boolean = false) {
        WorkManager.getInstance(context).enqueueUniqueWork(
            INSTALL_WORK_NAME,
            ExistingWorkPolicy.APPEND_OR_REPLACE,
@@ -27,11 +26,11 @@ object InstallWorkManager {
        )
    }

    fun cancelWork(tag: String) {
    fun cancelWork(context: Context, tag: String) {
        WorkManager.getInstance(context).cancelAllWorkByTag(tag)
    }

    fun checkWorkIsAlreadyAvailable(tag: String): Boolean {
    fun checkWorkIsAlreadyAvailable(context: Context, tag: String): Boolean {
        val works = WorkManager.getInstance(context).getWorkInfosByTag(tag)
        try {
            works.get().forEach {
+3 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@

package foundation.e.apps.data.install

import android.content.Context
import foundation.e.apps.data.enums.Status
import foundation.e.apps.data.fdroid.FDroidRepository
import foundation.e.apps.data.install.models.AppInstall
@@ -28,9 +29,10 @@ import org.junit.Test

class AppManagerWrapperProgressTest {

    private val context = mockk<Context>(relaxed = true)
    private val appManager = mockk<AppManager>(relaxed = true)
    private val fdroidRepository = mockk<FDroidRepository>(relaxed = true)
    private val appManagerWrapper = AppManagerWrapper(appManager, fdroidRepository)
    private val appManagerWrapper = AppManagerWrapper(context, appManager, fdroidRepository)

    @Test
    fun calculateProgress_emptyDownloadIds_returnsZero() = runTest {
Loading