Sharrit/app/src/main/java/com/shaarit/ShaarItApp.kt

49 lines
1.6 KiB
Kotlin

package com.shaarit
import android.app.Application
import androidx.hilt.work.HiltWorkerFactory
import androidx.work.Configuration
import androidx.work.Constraints
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.NetworkType
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import com.shaarit.data.worker.LinkHealthCheckWorker
import dagger.hilt.android.HiltAndroidApp
import java.util.concurrent.TimeUnit
import javax.inject.Inject
@HiltAndroidApp
class ShaarItApp : Application(), Configuration.Provider {
@Inject lateinit var workerFactory: HiltWorkerFactory
override val workManagerConfiguration: Configuration
get() = Configuration.Builder().setWorkerFactory(workerFactory).build()
override fun onCreate() {
super.onCreate()
setupHealthCheckWorker()
}
private fun setupHealthCheckWorker() {
// Contraintes: Wi-Fi uniquement + appareil en charge
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED) // Wi-Fi uniquement
.setRequiresCharging(true) // En charge pour ne pas nuire à l'utilisateur
.build()
val healthCheckRequest = PeriodicWorkRequestBuilder<LinkHealthCheckWorker>(
12, TimeUnit.HOURS // Toutes les 12h
)
.setConstraints(constraints)
.build()
WorkManager.getInstance(this).enqueueUniquePeriodicWork(
LinkHealthCheckWorker.WORK_NAME,
ExistingPeriodicWorkPolicy.KEEP,
healthCheckRequest
)
}
}