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

Commit a0907985 authored by Sayantan Roychowdhury's avatar Sayantan Roychowdhury
Browse files

Issue 4945: Re-Fix PWA status

parent 1c01d83b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -309,7 +309,7 @@ class MainActivityViewModel @Inject constructor(
            val downloadingItem = fusedDownloadList.find { fusedDownload ->
                fusedDownload.origin == it.origin && (fusedDownload.packageName == it.package_name || fusedDownload.id == it._id)
            }
            it.status = downloadingItem?.status ?: pkgManagerModule.getPackageStatus(it.package_name, it.latest_version_code)
            it.status = downloadingItem?.status ?: fusedAPIRepository.getFusedAppInstallationStatus(it)
        }
    }
}
+15 −5
Original line number Diff line number Diff line
@@ -653,14 +653,24 @@ class FusedAPIImpl @Inject constructor(
        return app
    }

    private fun FusedApp.updateStatus() {
        if (this.status != Status.INSTALLATION_ISSUE) {
            this.status = if (this.is_pwa) {
                pwaManagerModule.getPwaStatus(this)
    /**
     * Get fused app installation status.
     * Applicable for both native apps and PWAs.
     *
     * Recommended to use this instead of [PkgManagerModule.getPackageStatus].
     */
    fun getFusedAppInstallationStatus(fusedApp: FusedApp): Status {
        return if (fusedApp.is_pwa) {
            pwaManagerModule.getPwaStatus(fusedApp)
        } else {
                pkgManagerModule.getPackageStatus(this.package_name, this.latest_version_code)
            pkgManagerModule.getPackageStatus(fusedApp.package_name, fusedApp.latest_version_code)
        }
    }

    private fun FusedApp.updateStatus() {
        if (this.status != Status.INSTALLATION_ISSUE) {
            this.status = getFusedAppInstallationStatus(this)
        }
    }

    private fun FusedApp.updateType() {
+5 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import foundation.e.apps.api.fused.data.FusedCategory
import foundation.e.apps.api.fused.data.FusedHome
import foundation.e.apps.manager.database.fusedDownload.FusedDownload
import foundation.e.apps.utils.enums.Origin
import foundation.e.apps.utils.enums.Status
import javax.inject.Inject
import javax.inject.Singleton

@@ -114,4 +115,8 @@ class FusedAPIRepository @Inject constructor(
            else -> fusedAPIImpl.getPlayStoreApps(browseUrl, authData)
        }
    }

    fun getFusedAppInstallationStatus(fusedApp: FusedApp): Status {
        return fusedAPIImpl.getFusedAppInstallationStatus(fusedApp)
    }
}
+1 −4
Original line number Diff line number Diff line
@@ -107,10 +107,7 @@ class ApplicationViewModel @Inject constructor(
        fusedApp.value?.let { app ->
            val downloadingItem =
                downloadList.find { it.origin == app.origin && (it.packageName == app.package_name || it.id == app.package_name) }
            appStatus.value = downloadingItem?.status ?: pkgManagerModule.getPackageStatus(
                app.package_name,
                app.latest_version_code
            )
            appStatus.value = downloadingItem?.status ?: fusedAPIRepository.getFusedAppInstallationStatus(app)
        }
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.os.Build
import android.util.Log
import androidx.core.content.pm.PackageInfoCompat
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.api.fused.FusedAPIImpl
import foundation.e.apps.manager.database.fusedDownload.FusedDownload
import foundation.e.apps.utils.enums.Origin
import foundation.e.apps.utils.enums.Status
@@ -78,6 +79,12 @@ class PkgManagerModule @Inject constructor(
        return packageManager.getPackageInfo(packageName, 0)
    }

    /**
     * This method should be only used for native apps!
     * If you are using for any FusedApp, please consider that it can be a PWA!
     *
     * Recommended to use: [FusedAPIImpl.getFusedAppInstallationStatus].
     */
    fun getPackageStatus(packageName: String, versionCode: Int): Status {
        return if (isInstalled(packageName)) {
            if (isUpdatable(packageName, versionCode)) {