@@ -78,7 +78,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
78
78
workInterval?.summaryProvider = ListPreference .SimpleSummaryProvider .getInstance()
79
79
workInterval?.setOnPreferenceChangeListener { _, newValue ->
80
80
Log .d(" work_interval" , " newValue: $newValue " )
81
- ctx.toggleWorkManager (workInterval, newValue)
81
+ ctx.updateWorkManager (workInterval, newValue)
82
82
}
83
83
84
84
// Background Restriction
@@ -216,20 +216,28 @@ class SettingsFragment : PreferenceFragmentCompat() {
216
216
buildServerList()
217
217
}
218
218
219
- fun Context.toggleWorkManager ( pref : ListPreference , newValue : Any ): Boolean {
220
- Log .d(" toggleWorkManager " , " newValue: $newValue " )
219
+ fun Context.updateWorkManager ( listPref : ListPreference , newValue : Any ): Boolean {
220
+ Log .d(" updateWorkManager " , " listPref: ${listPref.value} - newValue: $newValue " )
221
221
val value = newValue as ? String
222
- Log .d(" toggleWorkManager " , " String value: $value " )
222
+ Log .d(" updateWorkManager " , " String value: $value " )
223
223
if (value.isNullOrEmpty()) {
224
- Log .w(" toggleWorkManager " , " NULL OR EMPTY - false" )
224
+ Log .w(" updateWorkManager " , " NULL OR EMPTY - false" )
225
225
return false
226
- } else if (pref.value != value) {
227
- Log .i(" toggleWorkManager" , " RESCHEDULING WORK - true" )
226
+ } else if (listPref.value == value) {
227
+ Log .i(" updateWorkManager" , " NO CHANGE - false" )
228
+ return false
229
+ } else {
230
+ Log .i(" updateWorkManager" , " RESCHEDULING WORK - true" )
228
231
val interval = value.toLongOrNull()
229
- Log .i(" toggleWorkManager" , " interval: $interval " )
230
- if (interval != null ) {
232
+ Log .i(" updateWorkManager" , " interval: $interval " )
233
+ if (interval == null || interval == 0L ) {
234
+ Log .i(" updateWorkManager" , " DISABLING WORK" )
235
+ WorkManager .getInstance(this ).cancelUniqueWork(" daily_worker" )
236
+ return true
237
+ } else {
231
238
val newRequest =
232
239
PeriodicWorkRequestBuilder <DailyWorker >(interval, TimeUnit .MINUTES )
240
+ .setInitialDelay(1 , TimeUnit .MINUTES )
233
241
.setConstraints(DAILY_WORKER_CONSTRAINTS )
234
242
.build()
235
243
WorkManager .getInstance(this ).enqueueUniquePeriodicWork(
@@ -238,14 +246,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
238
246
newRequest
239
247
)
240
248
return true
241
- } else {
242
- Log .i(" toggleWorkManager" , " DISABLING WORK - true" )
243
- WorkManager .getInstance(this ).cancelUniqueWork(" daily_worker" )
244
- return true
245
249
}
246
- } else {
247
- Log .i(" toggleWorkManager" , " NO CHANGE - false" )
248
- return false
249
250
}
250
251
}
251
252
0 commit comments