From cb6fb46d710b3b26204d0b9c65826aab28abbaca Mon Sep 17 00:00:00 2001 From: dev-12 Date: Tue, 25 Nov 2025 18:03:53 +0530 Subject: [PATCH] fix: handle empty response for unavailable apps in batch request correctly --- .../e/apps/data/application/apps/AppsApiImpl.kt | 8 +++++--- .../e/apps/data/playstore/PlayStoreRepository.kt | 10 +++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt b/app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt index b2ed05a49..537471aa3 100644 --- a/app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/application/apps/AppsApiImpl.kt @@ -104,12 +104,14 @@ class AppsApiImpl @Inject constructor( val applicationList = mutableListOf() val playStore = stores.getStore(Source.PLAY_STORE) as? PlayStoreRepository - val apps = playStore?.getAppsDetails(packageNameList).orEmpty() + val response = handleNetworkResult { + playStore?.getAppsDetails(packageNameList).orEmpty() + } + val apps = response.data ?: emptyList() for (app in apps) { handleFilteredApps(app, applicationList) } - - return Pair(applicationList, ResultStatus.OK) + return Pair(applicationList, response.getResultStatus()) } /* diff --git a/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt index 69986c036..3df55edda 100644 --- a/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt +++ b/app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt @@ -159,7 +159,7 @@ class PlayStoreRepository @Inject constructor( withContext(Dispatchers.IO) { var appDetails: List = getAppDetailsHelper().getAppByPackageName(packageNames) - if (!isEmulator() && appDetails.any { it.versionCode == 0L } && isAnonymousUser()) { + if (!isEmulator() && appDetails.all { it.versionCode == 0L } && isAnonymousUser()) { // Google Play returns limited result ( i.e. version code being 0) with a stale token, // so we need to refresh authentication to get a new token. Timber.i("Version code is 0.") @@ -168,13 +168,13 @@ class PlayStoreRepository @Inject constructor( appDetails = getAppDetailsHelper().getAppByPackageName(packageNames) - if (appDetails.any { it.versionCode == 0L }) { - Timber.w("After refreshing auth, version code is still 0. Giving up installation.") - throw IllegalStateException("App version code cannot be 0") + if (appDetails.all { it.versionCode == 0L }) { + Timber.w("After refreshing auth, version code is still 0.") } } - appDetails.map { it.toApplication(context) } + appDetails.filterNot { it.packageName.isBlank() || it.versionCode == 0L } + .map { it.toApplication(context) } } override suspend fun getAppDetails(packageName: String): Application = -- GitLab