From ff64026c004ef6f39bf040e2a0ad6eecdc3011f0 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Wed, 3 Aug 2022 01:40:38 +0200 Subject: [PATCH] Add: Option to set sync interval (closes #263) --- .../com/machiav3lli/fdroid/MainApplication.kt | 52 +++++++++++-------- .../machiav3lli/fdroid/content/Preferences.kt | 1 + .../ui/fragments/PrefsUpdatesFragment.kt | 5 ++ src/main/res/values/strings.xml | 1 + 4 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/MainApplication.kt b/src/main/kotlin/com/machiav3lli/fdroid/MainApplication.kt index 83279399..0c42764a 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/MainApplication.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/MainApplication.kt @@ -117,32 +117,38 @@ class MainApplication : Application(), ImageLoaderFactory { var lastLanguage = Preferences[Preferences.Key.Language] CoroutineScope(Dispatchers.Default).launch { Preferences.subject.collect { - if (it == Preferences.Key.ProxyType || it == Preferences.Key.ProxyHost || it == Preferences.Key.ProxyPort) { - updateProxy() - } else if (it == Preferences.Key.AutoSync) { - val autoSync = Preferences[Preferences.Key.AutoSync] - if (lastAutoSync != autoSync) { - lastAutoSync = autoSync - updateSyncJob(true) + when (it) { + Preferences.Key.ProxyType, Preferences.Key.ProxyHost, Preferences.Key.ProxyPort -> { + updateProxy() } - } else if (it == Preferences.Key.UpdateUnstable) { - val updateUnstable = Preferences[Preferences.Key.UpdateUnstable] - if (lastUpdateUnstable != updateUnstable) { - lastUpdateUnstable = updateUnstable - forceSyncAll() + Preferences.Key.AutoSync, Preferences.Key.AutoSyncInterval -> { + val autoSync = Preferences[Preferences.Key.AutoSync] + if (lastAutoSync != autoSync) { + lastAutoSync = autoSync + updateSyncJob(true) + } } - } else if (it == Preferences.Key.Language) { - val language = Preferences[Preferences.Key.Language] - if (language != lastLanguage) { - lastLanguage = language - val refresh = Intent.makeRestartActivityTask( - ComponentName( - baseContext, - MainActivityX::class.java + Preferences.Key.UpdateUnstable -> { + val updateUnstable = Preferences[Preferences.Key.UpdateUnstable] + if (lastUpdateUnstable != updateUnstable) { + lastUpdateUnstable = updateUnstable + forceSyncAll() + } + } + Preferences.Key.Language -> { + val language = Preferences[Preferences.Key.Language] + if (language != lastLanguage) { + lastLanguage = language + val refresh = Intent.makeRestartActivityTask( + ComponentName( + baseContext, + MainActivityX::class.java + ) ) - ) - applicationContext.startActivity(refresh) + applicationContext.startActivity(refresh) + } } + else -> return@collect } } } @@ -183,7 +189,7 @@ class MainApplication : Application(), ImageLoaderFactory { } private fun autoSync(jobScheduler: JobScheduler, connectionType: Int) { - val period = 5.minutes.inWholeMilliseconds + val period = Preferences[Preferences.Key.AutoSyncInterval].minutes.inWholeMilliseconds jobScheduler.schedule( JobInfo .Builder( diff --git a/src/main/kotlin/com/machiav3lli/fdroid/content/Preferences.kt b/src/main/kotlin/com/machiav3lli/fdroid/content/Preferences.kt index 65fccd27..f3845e40 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/content/Preferences.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/content/Preferences.kt @@ -138,6 +138,7 @@ object Preferences { "auto_sync", Value.EnumerationValue(Preferences.AutoSync.Wifi) ) + object AutoSyncInterval : Key("auto_sync_interval", Value.IntValue(60)) object InstallAfterSync : Key("auto_sync_install", Value.BooleanValue(Android.sdk(31))) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/PrefsUpdatesFragment.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/PrefsUpdatesFragment.kt index fc595f4e..f4edb7f1 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/PrefsUpdatesFragment.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/PrefsUpdatesFragment.kt @@ -29,6 +29,11 @@ class PrefsUpdatesFragment : PrefsNavFragmentX() { Preferences.AutoSync.Always -> getString(R.string.always) } } + addEditInt( + Preferences.Key.AutoSyncInterval, + getString(R.string.auto_sync_interval), + 1..1440 + ) addSwitch( Preferences.Key.InstallAfterSync, getString(R.string.install_after_sync), getString(R.string.install_after_sync_summary) diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 0bfdc81b..b8c127e7 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -208,5 +208,6 @@ Releases No versions available System dynamic + Auto-sync interval (in minutes) Favorites