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( 12, TimeUnit.HOURS // Toutes les 12h ) .setConstraints(constraints) .build() WorkManager.getInstance(this).enqueueUniquePeriodicWork( LinkHealthCheckWorker.WORK_NAME, ExistingPeriodicWorkPolicy.KEEP, healthCheckRequest ) } }