1
0
Fork 0

For #6124 #8158: Prevent infinite loop on fast taps on enable switch

master
Christian Sadilek 2020-02-06 13:50:29 -05:00
parent 0d87da4b11
commit 6019adafac
1 changed files with 10 additions and 8 deletions

View File

@ -35,12 +35,9 @@ class InstalledAddonDetailsFragment : Fragment() {
addon = AddonDetailsFragmentArgs.fromBundle(requireNotNull(arguments)).addon addon = AddonDetailsFragmentArgs.fromBundle(requireNotNull(arguments)).addon
} }
return inflater.inflate(R.layout.fragment_installed_add_on_details, container, false) return inflater.inflate(R.layout.fragment_installed_add_on_details, container, false).also {
} bind(it)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
bind(view)
} }
private fun bind(view: View) { private fun bind(view: View) {
@ -59,12 +56,14 @@ class InstalledAddonDetailsFragment : Fragment() {
switch.setState(addon.isEnabled()) switch.setState(addon.isEnabled())
switch.setOnCheckedChangeListener { v, isChecked -> switch.setOnCheckedChangeListener { v, isChecked ->
val addonManager = v.context.components.addonManager val addonManager = v.context.components.addonManager
switch.isClickable = false
if (isChecked) { if (isChecked) {
addonManager.enableAddon( addonManager.enableAddon(
addon, addon,
onSuccess = { onSuccess = {
runIfFragmentIsAttached { runIfFragmentIsAttached {
switch.setState(true) switch.isClickable = true
switch.setText(R.string.mozac_feature_addons_settings_on)
this.addon = it this.addon = it
showSnackBar( showSnackBar(
view, view,
@ -77,6 +76,7 @@ class InstalledAddonDetailsFragment : Fragment() {
}, },
onError = { onError = {
runIfFragmentIsAttached { runIfFragmentIsAttached {
switch.isClickable = true
showSnackBar( showSnackBar(
view, view,
getString( getString(
@ -92,7 +92,8 @@ class InstalledAddonDetailsFragment : Fragment() {
addon, addon,
onSuccess = { onSuccess = {
runIfFragmentIsAttached { runIfFragmentIsAttached {
switch.setState(false) switch.isClickable = true
switch.setText(R.string.mozac_feature_addons_settings_off)
this.addon = it this.addon = it
showSnackBar( showSnackBar(
view, view,
@ -105,6 +106,7 @@ class InstalledAddonDetailsFragment : Fragment() {
}, },
onError = { onError = {
runIfFragmentIsAttached { runIfFragmentIsAttached {
switch.isClickable = true
showSnackBar( showSnackBar(
view, view,
getString( getString(