Add: Option to set sync interval (closes #263)

This commit is contained in:
machiav3lli 2022-08-03 01:40:38 +02:00
parent 5ed61120dd
commit ff64026c00
4 changed files with 36 additions and 23 deletions

View File

@ -117,32 +117,38 @@ class MainApplication : Application(), ImageLoaderFactory {
var lastLanguage = Preferences[Preferences.Key.Language] var lastLanguage = Preferences[Preferences.Key.Language]
CoroutineScope(Dispatchers.Default).launch { CoroutineScope(Dispatchers.Default).launch {
Preferences.subject.collect { Preferences.subject.collect {
if (it == Preferences.Key.ProxyType || it == Preferences.Key.ProxyHost || it == Preferences.Key.ProxyPort) { when (it) {
updateProxy() Preferences.Key.ProxyType, Preferences.Key.ProxyHost, Preferences.Key.ProxyPort -> {
} else if (it == Preferences.Key.AutoSync) { updateProxy()
val autoSync = Preferences[Preferences.Key.AutoSync]
if (lastAutoSync != autoSync) {
lastAutoSync = autoSync
updateSyncJob(true)
} }
} else if (it == Preferences.Key.UpdateUnstable) { Preferences.Key.AutoSync, Preferences.Key.AutoSyncInterval -> {
val updateUnstable = Preferences[Preferences.Key.UpdateUnstable] val autoSync = Preferences[Preferences.Key.AutoSync]
if (lastUpdateUnstable != updateUnstable) { if (lastAutoSync != autoSync) {
lastUpdateUnstable = updateUnstable lastAutoSync = autoSync
forceSyncAll() updateSyncJob(true)
}
} }
} else if (it == Preferences.Key.Language) { Preferences.Key.UpdateUnstable -> {
val language = Preferences[Preferences.Key.Language] val updateUnstable = Preferences[Preferences.Key.UpdateUnstable]
if (language != lastLanguage) { if (lastUpdateUnstable != updateUnstable) {
lastLanguage = language lastUpdateUnstable = updateUnstable
val refresh = Intent.makeRestartActivityTask( forceSyncAll()
ComponentName( }
baseContext, }
MainActivityX::class.java 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) { private fun autoSync(jobScheduler: JobScheduler, connectionType: Int) {
val period = 5.minutes.inWholeMilliseconds val period = Preferences[Preferences.Key.AutoSyncInterval].minutes.inWholeMilliseconds
jobScheduler.schedule( jobScheduler.schedule(
JobInfo JobInfo
.Builder( .Builder(

View File

@ -138,6 +138,7 @@ object Preferences {
"auto_sync", "auto_sync",
Value.EnumerationValue(Preferences.AutoSync.Wifi) Value.EnumerationValue(Preferences.AutoSync.Wifi)
) )
object AutoSyncInterval : Key<Int>("auto_sync_interval", Value.IntValue(60))
object InstallAfterSync : object InstallAfterSync :
Key<Boolean>("auto_sync_install", Value.BooleanValue(Android.sdk(31))) Key<Boolean>("auto_sync_install", Value.BooleanValue(Android.sdk(31)))

View File

@ -29,6 +29,11 @@ class PrefsUpdatesFragment : PrefsNavFragmentX() {
Preferences.AutoSync.Always -> getString(R.string.always) Preferences.AutoSync.Always -> getString(R.string.always)
} }
} }
addEditInt(
Preferences.Key.AutoSyncInterval,
getString(R.string.auto_sync_interval),
1..1440
)
addSwitch( addSwitch(
Preferences.Key.InstallAfterSync, getString(R.string.install_after_sync), Preferences.Key.InstallAfterSync, getString(R.string.install_after_sync),
getString(R.string.install_after_sync_summary) getString(R.string.install_after_sync_summary)

View File

@ -208,5 +208,6 @@
<string name="releases">Releases</string> <string name="releases">Releases</string>
<string name="no_updates_available">No versions available</string> <string name="no_updates_available">No versions available</string>
<string name="dynamic">System dynamic</string> <string name="dynamic">System dynamic</string>
<string name="auto_sync_interval">Auto-sync interval (in minutes)</string>
<string name="favorite_applications">Favorites</string> <string name="favorite_applications">Favorites</string>
</resources> </resources>