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 2e0f40848b1b4c736e975258b2aeb5249670b3a5..69986c036980ff675e9bd569c8e738a50354017e 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,8 +159,7 @@ class PlayStoreRepository @Inject constructor( withContext(Dispatchers.IO) { var appDetails: List = getAppDetailsHelper().getAppByPackageName(packageNames) - if (!isEmulator() && appDetails.any { it.versionCode == 0L } - && authenticatorRepository.getGPlayAuthOrThrow().isAnonymous) { + if (!isEmulator() && appDetails.any { 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.") @@ -182,9 +181,7 @@ class PlayStoreRepository @Inject constructor( withContext(Dispatchers.IO) { var appDetails: GplayApp = getAppDetailsHelper().getAppByPackageName(packageName) - if (!isEmulator() && appDetails.versionCode == 0L - && authenticatorRepository.getGPlayAuthOrThrow().isAnonymous - ) { + if (!isEmulator() && appDetails.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 for ${appDetails.packageName}.") @@ -281,6 +278,8 @@ class PlayStoreRepository @Inject constructor( buildList { addAll(purchaseHelper.purchase(idOrPackageName, version, offer)) } } + fun isAnonymousUser() = authenticatorRepository.getGPlayAuthOrThrow().isAnonymous + suspend fun getOnDemandModule( packageName: String, moduleName: String, diff --git a/app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt b/app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt index 1630c4d679da19165c79a2ff265debfe82aad9e1..168bb76e07b3a7e7a6ea1d183112b867e2f19994 100644 --- a/app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt +++ b/app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt @@ -27,6 +27,8 @@ class AppInfoFetchViewModel @Inject constructor( emit(authorName) } + fun isAnonymousUser() = gPlayRepository.isAnonymousUser() + fun isAppPurchased(app: Application): LiveData { return liveData { try { diff --git a/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt b/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt index c9baec7e27a2f0374ecda123d2a98cc5874067b0..c12a8cc5808201c6755c10e7f40ea444a817916c 100644 --- a/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt @@ -86,7 +86,6 @@ import timber.log.Timber import java.util.Locale import javax.inject.Inject - @AndroidEntryPoint class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { @@ -228,6 +227,15 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { progressBarInstall.visibility = View.VISIBLE } + if (appInfoFetchViewModel.isAnonymousUser() && !application.isFree) { + handleInstallStatus(Status.UNAVAILABLE, binding.root, application) + binding.downloadInclude.apply { + progressBarInstall.visibility = View.GONE + installButton.text = application.price + } + return + } + if (!isFreeOrAlreadyPurchased(application)) { appInfoFetchViewModel.isAppPurchased(application).observe(viewLifecycleOwner) { binding.downloadInclude.progressBarInstall.visibility = View.GONE diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt index 31994463bce5c7de2634743cb94e7543dbe8e9ab..4dee4b59cef1003d5a8481a7ae61c7432b7b5103 100644 --- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt +++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt @@ -441,6 +441,12 @@ class ApplicationListRVAdapter( materialButton.disableInstallButton() materialButton.text = "" applicationListItemBinding.progressBarInstall.visibility = View.VISIBLE + if (appInfoFetchViewModel.isAnonymousUser()) { + materialButton.enableInstallButton() + applicationListItemBinding.progressBarInstall.visibility = View.GONE + materialButton.text = searchApp.price + return + } holder.isPurchasedLiveData = appInfoFetchViewModel.isAppPurchased(searchApp) if (lifecycleOwner == null) { return