diff --git a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt index 73ff6297200efcf070d5e8ea163be57835c13e5e..42d290e5407c3bfee28d60f57d4fa797285da0f9 100644 --- a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt @@ -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) } } } diff --git a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt index 15d77d99bee66c4394ae39f34ca34ca2715407c1..6079585b1af66454e9c06a5e8e1f083d46a6aa91 100644 --- a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +++ b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt @@ -653,13 +653,23 @@ class FusedAPIImpl @Inject constructor( return app } + /** + * 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(fusedApp.package_name, fusedApp.latest_version_code) + } + } + private fun FusedApp.updateStatus() { if (this.status != Status.INSTALLATION_ISSUE) { - this.status = if (this.is_pwa) { - pwaManagerModule.getPwaStatus(this) - } else { - pkgManagerModule.getPackageStatus(this.package_name, this.latest_version_code) - } + this.status = getFusedAppInstallationStatus(this) } } diff --git a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIRepository.kt b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIRepository.kt index 2e98dbc1dbdd8d64e1d55ac1198b75bf5f7efccf..f5f2ea17f50d14a05f7bf7827609a5d9f8f05cb4 100644 --- a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIRepository.kt +++ b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIRepository.kt @@ -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) + } } diff --git a/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt b/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt index 83c42a5f8faf0687203ff9a81dd4237824b71168..aa902b8f5fbae7a9f9f1446d266653afb420c112 100644 --- a/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt +++ b/app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt @@ -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) } } } diff --git a/app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt b/app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt index 716a935d51b85858f66d8e85e1ddf131fa32d902..a4b11fc9a8c97d9d139696bc0b4a0989473687a1 100644 --- a/app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt +++ b/app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt @@ -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)) {