From 361707f0cc5d24bab3f8f70d99da621ed1ecaede Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sat, 24 Feb 2024 06:38:21 +0530 Subject: [PATCH] SelfUpdateWorker: Make update check interval configurable Signed-off-by: Aayush Gupta --- .../store/data/work/SelfUpdateWorker.kt | 26 ++++++++++++++----- .../view/ui/preferences/UpdatesPreference.kt | 1 + app/src/main/res/values/strings.xml | 4 +-- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/work/SelfUpdateWorker.kt b/app/src/main/java/com/aurora/store/data/work/SelfUpdateWorker.kt index c930a8907..6e0f20e0d 100644 --- a/app/src/main/java/com/aurora/store/data/work/SelfUpdateWorker.kt +++ b/app/src/main/java/com/aurora/store/data/work/SelfUpdateWorker.kt @@ -7,6 +7,7 @@ import androidx.work.Constraints import androidx.work.CoroutineWorker import androidx.work.ExistingPeriodicWorkPolicy.KEEP import androidx.work.NetworkType +import androidx.work.PeriodicWorkRequest import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkManager import androidx.work.WorkerParameters @@ -19,6 +20,7 @@ import com.aurora.store.util.CertUtil import com.aurora.store.util.DownloadWorkerUtil import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences.PREFERENCE_SELF_UPDATE +import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_CHECK_INTERVAL import com.google.gson.Gson import dagger.assisted.Assisted import dagger.assisted.AssistedInject @@ -43,7 +45,22 @@ class SelfUpdateWorker @AssistedInject constructor( } fun scheduleAutomatedCheck(context: Context) { - Log.i(TAG, "Scheduling periodic self-updates!") + Log.i(TAG,"Scheduling periodic self-updates!") + WorkManager.getInstance(context) + .enqueueUniquePeriodicWork(SELF_UPDATE_WORKER, KEEP, buildUpdateWork(context)) + } + + fun updateAutomatedCheck(context: Context) { + Log.i(TAG,"Updating periodic self-updates!") + WorkManager.getInstance(context).updateWork(buildUpdateWork(context)) + } + + private fun buildUpdateWork(context: Context): PeriodicWorkRequest { + val updateCheckInterval = Preferences.getInteger( + context, + PREFERENCE_UPDATES_CHECK_INTERVAL, + 3 + ).toLong() val constraints = Constraints.Builder() .setRequiredNetworkType(NetworkType.UNMETERED) @@ -51,15 +68,12 @@ class SelfUpdateWorker @AssistedInject constructor( if (isMAndAbove()) constraints.setRequiresDeviceIdle(true) - val workRequest = PeriodicWorkRequestBuilder( - repeatInterval = 24, + return PeriodicWorkRequestBuilder( + repeatInterval = updateCheckInterval, repeatIntervalTimeUnit = HOURS, flexTimeInterval = 30, flexTimeIntervalUnit = MINUTES ).setConstraints(constraints.build()).build() - - val workManager = WorkManager.getInstance(context) - workManager.enqueueUniquePeriodicWork(SELF_UPDATE_WORKER, KEEP, workRequest) } } 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 3f66c8345..bea11096c 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 @@ -74,6 +74,7 @@ class UpdatesPreference : PreferenceFragmentCompat() { findPreference(PREFERENCE_UPDATES_CHECK_INTERVAL) ?.setOnPreferenceChangeListener { _, _ -> UpdateWorker.updateAutomatedCheck(requireContext()) + SelfUpdateWorker.updateAutomatedCheck(requireContext()) true } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd94bc68f..75291875c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -376,7 +376,7 @@ Check & notify for available updates Check & install available updates automatically Automatic updates frequency - Configure intervals for auto updates, in hour. + Configure intervals for auto and self updates, in hour. Failed to fetch privacy report Access denied! Are you using VPN or Tor? Internal error! Please retry after sometime @@ -405,6 +405,6 @@ Please, disable battery optimizations to allow background operations. Optionally you can choose to keep the optimizations enabled, but then you won\'t be able to take benefit of background downloads and automated updates, so choice is yours. Self-updates - Check and notify if a new stable version of Aurora Store is available + Check and install if a new stable version of Aurora Store is available Failed to export APKs