1
0
Fork 0

For #8167: Don't show the add-ons permission dialog if installation is in progress (#8230)

master
Gabriel Luong 2020-02-07 16:06:28 -05:00 committed by GitHub
parent 1209146788
commit e3df9f0902
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 4 deletions

View File

@ -30,7 +30,12 @@ import org.mozilla.fenix.ext.showToolbar
* Fragment use for managing add-ons. * Fragment use for managing add-ons.
*/ */
@Suppress("TooManyFunctions") @Suppress("TooManyFunctions")
class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management), AddonsManagerAdapterDelegate { class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
AddonsManagerAdapterDelegate {
/**
* Whether or not an add-on installation is in progress.
*/
private var isInstallationInProgress = false
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -85,7 +90,10 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
} }
} catch (e: AddonManagerException) { } catch (e: AddonManagerException) {
lifecycleScope.launch(Dispatchers.Main) { lifecycleScope.launch(Dispatchers.Main) {
showSnackBar(view, getString(R.string.mozac_feature_addons_failed_to_query_add_ons)) showSnackBar(
view,
getString(R.string.mozac_feature_addons_failed_to_query_add_ons)
)
view.add_ons_progress_bar.isVisible = false view.add_ons_progress_bar.isVisible = false
view.add_ons_empty_message.isVisible = true view.add_ons_empty_message.isVisible = true
} }
@ -126,7 +134,7 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
} }
private fun showPermissionDialog(addon: Addon) { private fun showPermissionDialog(addon: Addon) {
if (!hasExistingPermissionDialogFragment()) { if (!isInstallationInProgress && !hasExistingPermissionDialogFragment()) {
val dialog = PermissionsDialogFragment.newInstance( val dialog = PermissionsDialogFragment.newInstance(
addon = addon, addon = addon,
onPositiveButtonClicked = onPositiveButtonClicked onPositiveButtonClicked = onPositiveButtonClicked
@ -137,6 +145,8 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
private val onPositiveButtonClicked: ((Addon) -> Unit) = { addon -> private val onPositiveButtonClicked: ((Addon) -> Unit) = { addon ->
addonProgressOverlay.visibility = View.VISIBLE addonProgressOverlay.visibility = View.VISIBLE
isInstallationInProgress = true
requireContext().components.addonManager.installAddon( requireContext().components.addonManager.installAddon(
addon, addon,
onSuccess = { onSuccess = {
@ -150,12 +160,20 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management),
) )
bindRecyclerView(view) bindRecyclerView(view)
addonProgressOverlay?.visibility = View.GONE addonProgressOverlay?.visibility = View.GONE
isInstallationInProgress = false
} }
}, },
onError = { _, _ -> onError = { _, _ ->
this@AddonsManagementFragment.view?.let { view -> this@AddonsManagementFragment.view?.let { view ->
showSnackBar(view, getString(R.string.mozac_feature_addons_failed_to_install, addon.translatedName)) showSnackBar(
view,
getString(
R.string.mozac_feature_addons_failed_to_install,
addon.translatedName
)
)
addonProgressOverlay?.visibility = View.GONE addonProgressOverlay?.visibility = View.GONE
isInstallationInProgress = false
} }
} }
) )