Loading app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +1 −1 Original line number Diff line number Diff line Loading @@ -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) } } } app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +15 −5 Original line number Diff line number Diff line Loading @@ -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() { Loading app/src/main/java/foundation/e/apps/api/fused/FusedAPIRepository.kt +5 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -114,4 +115,8 @@ class FusedAPIRepository @Inject constructor( else -> fusedAPIImpl.getPlayStoreApps(browseUrl, authData) } } fun getFusedAppInstallationStatus(fusedApp: FusedApp): Status { return fusedAPIImpl.getFusedAppInstallationStatus(fusedApp) } } app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt +1 −4 Original line number Diff line number Diff line Loading @@ -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) } } } app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt +7 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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)) { Loading Loading
app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +1 −1 Original line number Diff line number Diff line Loading @@ -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) } } }
app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +15 −5 Original line number Diff line number Diff line Loading @@ -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() { Loading
app/src/main/java/foundation/e/apps/api/fused/FusedAPIRepository.kt +5 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -114,4 +115,8 @@ class FusedAPIRepository @Inject constructor( else -> fusedAPIImpl.getPlayStoreApps(browseUrl, authData) } } fun getFusedAppInstallationStatus(fusedApp: FusedApp): Status { return fusedAPIImpl.getFusedAppInstallationStatus(fusedApp) } }
app/src/main/java/foundation/e/apps/application/ApplicationViewModel.kt +1 −4 Original line number Diff line number Diff line Loading @@ -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) } } }
app/src/main/java/foundation/e/apps/manager/pkg/PkgManagerModule.kt +7 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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)) { Loading