DetailsFragment: Do not enqueue download if app is not supported

- This would be more relevant when we migrate to web APIs
 - Web stream are not device specific so it may list unsupported apps
This commit is contained in:
Rahul Patel
2024-06-26 23:48:40 +05:30
parent 836cc0309d
commit 37b3d2f2db
2 changed files with 17 additions and 10 deletions

View File

@@ -53,7 +53,6 @@ import com.aurora.extensions.share
import com.aurora.extensions.show import com.aurora.extensions.show
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.AuthData
import com.aurora.gplayapi.data.models.Review import com.aurora.gplayapi.data.models.Review
import com.aurora.gplayapi.data.models.StreamBundle import com.aurora.gplayapi.data.models.StreamBundle
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
@@ -88,14 +87,14 @@ import com.aurora.store.viewmodel.details.DetailsClusterViewModel
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
import java.util.Locale import java.util.Locale
import javax.inject.Inject import javax.inject.Inject
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.filter
@AndroidEntryPoint @AndroidEntryPoint
class AppDetailsFragment : BaseFragment(R.layout.fragment_details) { class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
@@ -223,12 +222,10 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
viewModel.fetchAppDetails(view.context, app.packageName) viewModel.fetchAppDetails(view.context, app.packageName)
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
viewModel.app.collect { viewModel.app.collect {
if (app.packageName.isNotBlank()) { if (it.packageName.isNotBlank()) {
if (isExternal) { app = it
app = it inflatePartialApp() // Re-inflate the app details, as web data may vary.
inflatePartialApp() inflateExtraDetails(app)
}
inflateExtraDetails(it)
viewModel.fetchAppReviews(view.context, app.packageName) viewModel.fetchAppReviews(view.context, app.packageName)
} else { } else {
toast("Failed to fetch app details") toast("Failed to fetch app details")
@@ -256,6 +253,7 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
DownloadStatus.QUEUED -> { DownloadStatus.QUEUED -> {
updateProgress(it.progress) updateProgress(it.progress)
} }
DownloadStatus.DOWNLOADING -> { DownloadStatus.DOWNLOADING -> {
updateProgress(it.progress, it.speed, it.timeRemaining) updateProgress(it.progress, it.speed, it.timeRemaining)
} }
@@ -612,7 +610,13 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
binding.layoutDetailsApp.txtLine3.text = binding.layoutDetailsApp.txtLine3.text =
("$installedVersion${app.versionName} (${app.versionCode})") ("$installedVersion${app.versionName} (${app.versionCode})")
btn.setText(R.string.action_update) btn.setText(R.string.action_update)
btn.addOnClickListener { startDownload() } btn.addOnClickListener {
if (app.versionCode == 0) {
toast(R.string.toast_app_unavailable)
} else {
startDownload()
}
}
} else { } else {
binding.layoutDetailsApp.txtLine3.text = installedVersion binding.layoutDetailsApp.txtLine3.text = installedVersion
btn.setText(R.string.action_open) btn.setText(R.string.action_open)
@@ -633,6 +637,8 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
btn.addOnClickListener { btn.addOnClickListener {
if (authProvider.isAnonymous && !app.isFree) { if (authProvider.isAnonymous && !app.isFree) {
toast(R.string.toast_purchase_blocked) toast(R.string.toast_purchase_blocked)
} else if (app.versionCode == 0) {
toast(R.string.toast_app_unavailable)
} else { } else {
btn.setText(R.string.download_metadata) btn.setText(R.string.download_metadata)
startDownload() startDownload()

View File

@@ -302,6 +302,7 @@
<string name="toast_anonymous_restriction">"Not available on anonymous accounts"</string> <string name="toast_anonymous_restriction">"Not available on anonymous accounts"</string>
<string name="toast_apk_blacklisted">"Blacklisted"</string> <string name="toast_apk_blacklisted">"Blacklisted"</string>
<string name="toast_apk_whitelisted">"Whitelisted"</string> <string name="toast_apk_whitelisted">"Whitelisted"</string>
<string name="toast_app_unavailable">"App not available for your device"</string>
<string name="toast_clipboard_copied">"Copied to clipboard"</string> <string name="toast_clipboard_copied">"Copied to clipboard"</string>
<string name="toast_developer_setting_failed">Turn on developer settings from the device settings to open them.</string> <string name="toast_developer_setting_failed">Turn on developer settings from the device settings to open them.</string>
<string name="toast_permission_granted">"Permission granted"</string> <string name="toast_permission_granted">"Permission granted"</string>