package de.wechselbild.wallpaper import android.content.Context import androidx.work.Constraints import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.NetworkType import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkManager import androidx.work.Worker import androidx.work.WorkerParameters import java.util.concurrent.TimeUnit class ImmichPrefetchWorker(context: Context, parameters: WorkerParameters) : Worker(context, parameters) { override fun doWork(): Result { WallpaperStore.prefetchImmichOriginals(applicationContext) return Result.success() } companion object { private const val WORK_NAME = "immich-wifi-prefetch" fun enqueue(context: Context) { val constraints = Constraints.Builder() .setRequiredNetworkType(NetworkType.UNMETERED) .setRequiresBatteryNotLow(true) .build() val request = PeriodicWorkRequestBuilder(6, TimeUnit.HOURS) .setConstraints(constraints) .build() WorkManager.getInstance(context).enqueueUniquePeriodicWork(WORK_NAME, ExistingPeriodicWorkPolicy.KEEP, request) } fun cancel(context: Context) { WorkManager.getInstance(context).cancelUniqueWork(WORK_NAME) } } }