package com.jttools.datacontrol import android.app.Application import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkManager import com.jttools.datacontrol.data.SettingsRepository import com.jttools.datacontrol.service.DataMonitorRestartWorker import dagger.hilt.android.HiltAndroidApp import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import java.util.concurrent.TimeUnit import javax.inject.Inject @HiltAndroidApp class DataControlApp : Application() { @Inject lateinit var settingsRepository: SettingsRepository override fun onCreate() { super.onCreate() com.jttools.datacontrol.log.AppLog.init(this) CoroutineScope(Dispatchers.IO).launch { settingsRepository.resetPasswordOnce() settingsRepository.migrateToV02() } // VPN « toujours actif » (réglage Android ou mode propriétaire) : le système démarre le service // VPN de la bibliothèque ; on relance alors la surveillance, qui monte le tunnel. com.wireguard.android.backend.GoBackend.setAlwaysOnCallback { com.jttools.datacontrol.service.DataMonitorService.start(this) } // Filet de sécurité : relance périodiquement DataMonitorService s'il a été tué en arrière-plan. // enqueueUniquePeriodicWork + KEEP : sans effet si déjà planifié, donc sûr à appeler à chaque démarrage. val request = PeriodicWorkRequestBuilder(15, TimeUnit.MINUTES).build() WorkManager.getInstance(this).enqueueUniquePeriodicWork( DataMonitorRestartWorker.WORK_NAME, ExistingPeriodicWorkPolicy.KEEP, request ) } }