49 lines
1.6 KiB
Kotlin
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
|
|
)
|
|
}
|
|
}
|