Loading app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt +4 −5 Original line number Diff line number Diff line Loading @@ -159,8 +159,7 @@ class PlayStoreRepository @Inject constructor( withContext(Dispatchers.IO) { var appDetails: List<GplayApp> = 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.") Loading @@ -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}.") Loading Loading @@ -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, Loading app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ class AppInfoFetchViewModel @Inject constructor( emit(authorName) } fun isAnonymousUser() = gPlayRepository.isAnonymousUser() fun isAppPurchased(app: Application): LiveData<Boolean> { return liveData { try { Loading app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt +9 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,6 @@ import timber.log.Timber import java.util.Locale import javax.inject.Inject @AndroidEntryPoint class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { Loading Loading @@ -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 Loading app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt +6 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt +4 −5 Original line number Diff line number Diff line Loading @@ -159,8 +159,7 @@ class PlayStoreRepository @Inject constructor( withContext(Dispatchers.IO) { var appDetails: List<GplayApp> = 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.") Loading @@ -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}.") Loading Loading @@ -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, Loading
app/src/main/java/foundation/e/apps/ui/AppInfoFetchViewModel.kt +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ class AppInfoFetchViewModel @Inject constructor( emit(authorName) } fun isAnonymousUser() = gPlayRepository.isAnonymousUser() fun isAppPurchased(app: Application): LiveData<Boolean> { return liveData { try { Loading
app/src/main/java/foundation/e/apps/ui/application/ApplicationFragment.kt +9 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,6 @@ import timber.log.Timber import java.util.Locale import javax.inject.Inject @AndroidEntryPoint class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { Loading Loading @@ -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 Loading
app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt +6 −0 Original line number Diff line number Diff line Loading @@ -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 Loading