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

View File

@@ -302,6 +302,7 @@
<string name="toast_anonymous_restriction">"Not available on anonymous accounts"</string>
<string name="toast_apk_blacklisted">"Blacklisted"</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_developer_setting_failed">Turn on developer settings from the device settings to open them.</string>
<string name="toast_permission_granted">"Permission granted"</string>