From 63460f862912f22654a7396b6237ea25376b13d1 Mon Sep 17 00:00:00 2001 From: ThIsLinked Date: Thu, 16 Nov 2023 05:19:56 +0200 Subject: [PATCH] MainActivity: Restrict self-updates check to non-fdroid builds Signed-off-by: Aayush Gupta --- .../main/java/com/aurora/store/MainActivity.kt | 18 +++++++++++------- .../java/com/aurora/store/util/Preferences.kt | 2 ++ .../view/ui/onboarding/OnboardingFragment.kt | 7 +++++++ .../view/ui/preferences/UpdatesPreference.kt | 17 ++++++++++++++++- app/src/main/res/values/strings.xml | 3 +++ app/src/main/res/xml/preferences_updates.xml | 8 ++++++++ 6 files changed, 47 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/aurora/store/MainActivity.kt b/app/src/main/java/com/aurora/store/MainActivity.kt index cda74dbc2..0f9e3cab4 100644 --- a/app/src/main/java/com/aurora/store/MainActivity.kt +++ b/app/src/main/java/com/aurora/store/MainActivity.kt @@ -60,9 +60,11 @@ import com.aurora.store.data.model.NetworkStatus import com.aurora.store.data.model.SelfUpdate import com.aurora.store.data.providers.NetworkProvider import com.aurora.store.databinding.ActivityMainBinding +import com.aurora.store.util.CertUtil import com.aurora.store.util.Log import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences.PREFERENCE_DEFAULT_SELECTED_TAB +import com.aurora.store.util.Preferences.PREFERENCE_SELF_UPDATE import com.aurora.store.view.ui.sheets.NetworkDialogSheet import com.aurora.store.view.ui.sheets.SelfUpdateSheet import com.aurora.store.viewmodel.MainViewModel @@ -150,13 +152,15 @@ class MainActivity : AppCompatActivity() { } /* Check self update only for stable release, skip debug & nightlies*/ - if (BuildConfig.APPLICATION_ID == Constants.APP_ID) viewModel.checkSelfUpdate(this) - this.lifecycleScope.launch { - viewModel.selfUpdateAvailable.collect { - if (it != null) { - showUpdatesSheet(it) - } else { - Log.i("No self-update available") + if (Preferences.getBoolean(this, PREFERENCE_SELF_UPDATE)) { + if (BuildConfig.APPLICATION_ID == Constants.APP_ID) viewModel.checkSelfUpdate(this) + this.lifecycleScope.launch { + viewModel.selfUpdateAvailable.collect { + if (it != null) { + showUpdatesSheet(it) + } else { + Log.i("No self-update available") + } } } } diff --git a/app/src/main/java/com/aurora/store/util/Preferences.kt b/app/src/main/java/com/aurora/store/util/Preferences.kt index 9a9d50b00..4763c86ff 100644 --- a/app/src/main/java/com/aurora/store/util/Preferences.kt +++ b/app/src/main/java/com/aurora/store/util/Preferences.kt @@ -66,6 +66,8 @@ object Preferences { const val PREFERENCE_UNIQUE_GROUP_IDS = "PREFERENCE_UNIQUE_GROUP_IDS" + const val PREFERENCE_SELF_UPDATE = "PREFERENCE_SELF_UPDATE" + private var prefs: SharedPreferences? = null fun getPrefs(context: Context): SharedPreferences { diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt index 3e6f7e5d9..61f84a0f5 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt @@ -28,9 +28,11 @@ import androidx.navigation.fragment.findNavController import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback import com.aurora.extensions.isSAndAbove +import com.aurora.store.BuildConfig import com.aurora.store.R import com.aurora.store.data.work.UpdateWorker import com.aurora.store.databinding.FragmentOnboardingBinding +import com.aurora.store.util.CertUtil import com.aurora.store.util.PathUtil import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences.PREFERENCE_AUTO_DELETE @@ -51,6 +53,7 @@ import com.aurora.store.util.Preferences.PREFERENCE_INTRO import com.aurora.store.util.Preferences.PREFERENCE_PROXY_ENABLED import com.aurora.store.util.Preferences.PREFERENCE_PROXY_INFO import com.aurora.store.util.Preferences.PREFERENCE_PROXY_URL +import com.aurora.store.util.Preferences.PREFERENCE_SELF_UPDATE import com.aurora.store.util.Preferences.PREFERENCE_SIMILAR import com.aurora.store.util.Preferences.PREFERENCE_THEME_ACCENT import com.aurora.store.util.Preferences.PREFERENCE_THEME_TYPE @@ -187,5 +190,9 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) { save(PREFERENCE_UPDATES_EXTENDED, false) save(PREFERENCE_UPDATES_CHECK, true) save(PREFERENCE_UPDATES_CHECK_INTERVAL, 3) + save( + PREFERENCE_SELF_UPDATE, + CertUtil.isFDroidApp(requireContext(), BuildConfig.APPLICATION_ID) + ) } } diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/UpdatesPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/UpdatesPreference.kt index 4ce4abc3b..ff501cee1 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/UpdatesPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/UpdatesPreference.kt @@ -25,15 +25,30 @@ import androidx.appcompat.widget.Toolbar import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreferenceCompat +import com.aurora.store.BuildConfig import com.aurora.store.R import com.aurora.store.data.work.UpdateWorker +import com.aurora.store.util.CertUtil import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_CHECK +import com.aurora.store.util.Preferences.PREFERENCE_SELF_UPDATE +import com.aurora.store.util.save class UpdatesPreference : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences_updates, rootKey) + findPreference(PREFERENCE_SELF_UPDATE)?.let { + if (CertUtil.isFDroidApp(requireContext(), BuildConfig.APPLICATION_ID)) { + it.isVisible = false + } + + it.setOnPreferenceChangeListener { _, newValue -> + save(PREFERENCE_SELF_UPDATE, newValue.toString().toBoolean()) + true + } + } + findPreference(PREFERENCE_UPDATES_CHECK) ?.setOnPreferenceChangeListener { _, newValue -> if (newValue.toString().toBoolean()) { @@ -52,4 +67,4 @@ class UpdatesPreference : PreferenceFragmentCompat() { setNavigationOnClickListener { findNavController().navigateUp() } } } -} \ No newline at end of file +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 905884bb5..f9e577f55 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -393,4 +393,7 @@ Android Market was an online store offering software applications designed for Android devices, retired in 2017. www.amazon.com Amazon Appstore is an app store for Android-compatible platforms operated by Amazon. + + Self-updates + Check and notify if a new stable version of Aurora Store is available diff --git a/app/src/main/res/xml/preferences_updates.xml b/app/src/main/res/xml/preferences_updates.xml index 96b0d7263..fb3298360 100644 --- a/app/src/main/res/xml/preferences_updates.xml +++ b/app/src/main/res/xml/preferences_updates.xml @@ -20,6 +20,14 @@ + +