From 4a9033df8e029e0b185aae3cf0f72a07796fef26 Mon Sep 17 00:00:00 2001 From: dev-12 Date: Wed, 10 Dec 2025 17:25:22 +0530 Subject: [PATCH] fix: correctly throw app not found error --- .../java/foundation/e/apps/data/NetworkHandler.kt | 5 +++++ .../e/apps/data/playstore/PlayStoreRepository.kt | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt index b5e6b65f2..10bde5c52 100644 --- a/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt +++ b/app/src/main/java/foundation/e/apps/data/NetworkHandler.kt @@ -20,6 +20,7 @@ package foundation.e.apps.data +import com.aurora.gplayapi.exceptions.InternalException import foundation.e.apps.data.login.exceptions.GPlayException import foundation.e.apps.data.playstore.utils.GPlayHttpClient import foundation.e.apps.data.playstore.utils.GplayHttpRequestException @@ -40,6 +41,10 @@ private const val INITIAL_DELAY_RETRY_IN_SECONDS = 1 suspend fun handleNetworkResult(call: suspend () -> T): ResultSupreme { return try { ResultSupreme.Success(call()) + } catch (exception: InternalException.AppNotFound) { + // catch and rethrow the error because we catch all `Exception` in the last catch block + // if this error is swallowed caller will not get the app not found error + throw exception } catch (e: CancellationException) { throw e } catch (e: SocketTimeoutException) { 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 7e90fa169..f69036aff 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 @@ -23,6 +23,7 @@ import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.ContentRating import com.aurora.gplayapi.data.models.PlayFile import com.aurora.gplayapi.data.models.StreamCluster +import com.aurora.gplayapi.exceptions.InternalException import com.aurora.gplayapi.helpers.AppDetailsHelper import com.aurora.gplayapi.helpers.ContentRatingHelper import com.aurora.gplayapi.helpers.PurchaseHelper @@ -52,6 +53,7 @@ import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import timber.log.Timber +import java.net.HttpURLConnection import javax.inject.Inject import com.aurora.gplayapi.data.models.App as GplayApp @@ -179,7 +181,14 @@ class PlayStoreRepository @Inject constructor( override suspend fun getAppDetails(packageName: String): Application = withContext(Dispatchers.IO) { - var appDetails: GplayApp = getAppDetailsHelper().getAppByPackageName(packageName) + var appDetails: GplayApp = try { + getAppDetailsHelper().getAppByPackageName(packageName) + } catch (exception: GplayHttpRequestException) { + if (exception.status == HttpURLConnection.HTTP_NOT_FOUND) { + throw InternalException.AppNotFound() + } + throw exception + } if (!isEmulator() && appDetails.versionCode == 0L && isAnonymousUser()) { // Google Play returns limited result ( i.e. version code being 0) with a stale token, -- GitLab