From f785a07ef9121c51c0a3b37497f68b61d827c2fc Mon Sep 17 00:00:00 2001 From: Arturo Mejia Date: Tue, 24 Mar 2020 15:49:45 -0400 Subject: [PATCH] No issue: Add add-on updater information dialog --- .../fenix/addons/AddonDetailsFragment.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/app/src/main/java/org/mozilla/fenix/addons/AddonDetailsFragment.kt b/app/src/main/java/org/mozilla/fenix/addons/AddonDetailsFragment.kt index 65e6a2523..e685c176e 100644 --- a/app/src/main/java/org/mozilla/fenix/addons/AddonDetailsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/addons/AddonDetailsFragment.kt @@ -11,10 +11,17 @@ import android.text.method.LinkMovementMethod import android.view.View import androidx.core.text.HtmlCompat import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.navArgs import kotlinx.android.synthetic.main.fragment_add_on_details.view.* +import kotlinx.coroutines.Dispatchers.IO +import kotlinx.coroutines.Dispatchers.Main +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import mozilla.components.feature.addons.Addon +import mozilla.components.feature.addons.ui.showInformationDialog import mozilla.components.feature.addons.ui.translate +import mozilla.components.feature.addons.update.DefaultAddonUpdater.UpdateAttemptStorage import org.mozilla.fenix.R import org.mozilla.fenix.ext.showToolbar import java.text.DateFormat @@ -25,6 +32,9 @@ import java.util.Locale * A fragment to show the details of an add-on. */ class AddonDetailsFragment : Fragment(R.layout.fragment_add_on_details) { + private val updateAttemptStorage: UpdateAttemptStorage by lazy { + UpdateAttemptStorage(requireContext()) + } private val args by navArgs() @@ -74,6 +84,23 @@ class AddonDetailsFragment : Fragment(R.layout.fragment_add_on_details) { private fun bindVersion(addon: Addon, view: View) { view.version_text.text = addon.installedState?.version?.ifEmpty { addon.version } ?: addon.version + if (addon.isInstalled()) { + view.version_text.setOnLongClickListener { + showUpdaterDialog(addon) + true + } + } + } + + private fun showUpdaterDialog(addon: Addon) { + lifecycleScope.launch(IO) { + val updateAttempt = updateAttemptStorage.findUpdateAttemptBy(addon.id) + updateAttempt?.let { + withContext(Main) { + it.showInformationDialog(requireContext()) + } + } + } } private fun bindAuthors(addon: Addon, view: View) {