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]
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(

View File

@ -138,6 +138,7 @@ object Preferences {
"auto_sync",
Value.EnumerationValue(Preferences.AutoSync.Wifi)
)
object AutoSyncInterval : Key<Int>("auto_sync_interval", Value.IntValue(60))
object InstallAfterSync :
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)
}
}
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)

View File

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