mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 16:18:55 +01:00 
			
		
		
		
	Tweak WorkManager task cancellation, add flex times
This commit is contained in:
		@@ -32,16 +32,16 @@ class BackupCreatorJob(private val context: Context, workerParams: WorkerParamet
 | 
			
		||||
            val preferences = Injekt.get<PreferencesHelper>()
 | 
			
		||||
            val interval = prefInterval ?: preferences.backupInterval().getOrDefault()
 | 
			
		||||
            if (interval > 0) {
 | 
			
		||||
                val request = PeriodicWorkRequestBuilder<BackupCreatorJob>(interval.toLong(), TimeUnit.HOURS)
 | 
			
		||||
                val request = PeriodicWorkRequestBuilder<BackupCreatorJob>(
 | 
			
		||||
                        interval.toLong(), TimeUnit.HOURS,
 | 
			
		||||
                        10, TimeUnit.MINUTES)
 | 
			
		||||
                        .addTag(TAG)
 | 
			
		||||
                        .build()
 | 
			
		||||
 | 
			
		||||
                WorkManager.getInstance().enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.REPLACE, request)
 | 
			
		||||
            } else {
 | 
			
		||||
                WorkManager.getInstance().cancelAllWorkByTag(TAG)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fun cancelTask() {
 | 
			
		||||
            WorkManager.getInstance().cancelAllWorkByTag(TAG)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -41,17 +41,17 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
 | 
			
		||||
                        .setRequiresCharging(acRestriction)
 | 
			
		||||
                        .build()
 | 
			
		||||
 | 
			
		||||
                val request = PeriodicWorkRequestBuilder<LibraryUpdateJob>(interval.toLong(), TimeUnit.HOURS)
 | 
			
		||||
                val request = PeriodicWorkRequestBuilder<LibraryUpdateJob>(
 | 
			
		||||
                        interval.toLong(), TimeUnit.HOURS,
 | 
			
		||||
                        10, TimeUnit.MINUTES)
 | 
			
		||||
                        .addTag(TAG)
 | 
			
		||||
                        .setConstraints(constraints)
 | 
			
		||||
                        .build()
 | 
			
		||||
 | 
			
		||||
                WorkManager.getInstance().enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.REPLACE, request)
 | 
			
		||||
            } else {
 | 
			
		||||
                WorkManager.getInstance().cancelAllWorkByTag(TAG)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fun cancelTask() {
 | 
			
		||||
            WorkManager.getInstance().cancelAllWorkByTag(TAG)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,9 @@ class UpdaterJob(private val context: Context, workerParams: WorkerParameters) :
 | 
			
		||||
                    .setRequiredNetworkType(NetworkType.CONNECTED)
 | 
			
		||||
                    .build()
 | 
			
		||||
 | 
			
		||||
            val request = PeriodicWorkRequestBuilder<UpdaterJob>(1, TimeUnit.DAYS)
 | 
			
		||||
            val request = PeriodicWorkRequestBuilder<UpdaterJob>(
 | 
			
		||||
                    1, TimeUnit.DAYS,
 | 
			
		||||
                    1, TimeUnit.HOURS)
 | 
			
		||||
                    .addTag(TAG)
 | 
			
		||||
                    .setConstraints(constraints)
 | 
			
		||||
                    .build()
 | 
			
		||||
 
 | 
			
		||||
@@ -105,13 +105,8 @@ class SettingsBackupController : SettingsController() {
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
 | 
			
		||||
                onChange { newValue ->
 | 
			
		||||
                    // Always cancel the previous task, it seems that sometimes they are not updated
 | 
			
		||||
                    BackupCreatorJob.cancelTask()
 | 
			
		||||
 | 
			
		||||
                    val interval = (newValue as String).toInt()
 | 
			
		||||
                    if (interval > 0) {
 | 
			
		||||
                        BackupCreatorJob.setupTask(interval)
 | 
			
		||||
                    }
 | 
			
		||||
                    BackupCreatorJob.setupTask(interval)
 | 
			
		||||
                    true
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -86,13 +86,8 @@ class SettingsLibraryController : SettingsController() {
 | 
			
		||||
                summary = "%s"
 | 
			
		||||
 | 
			
		||||
                onChange { newValue ->
 | 
			
		||||
                    // Always cancel the previous task, it seems that sometimes they are not updated.
 | 
			
		||||
                    LibraryUpdateJob.cancelTask()
 | 
			
		||||
 | 
			
		||||
                    val interval = (newValue as String).toInt()
 | 
			
		||||
                    if (interval > 0) {
 | 
			
		||||
                        LibraryUpdateJob.setupTask(interval)
 | 
			
		||||
                    }
 | 
			
		||||
                    LibraryUpdateJob.setupTask(interval)
 | 
			
		||||
                    true
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user