package com.jttools.datacontrol.service import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import com.jttools.datacontrol.data.SettingsRepository import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.flow.first import dagger.hilt.android.EntryPointAccessors import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import dagger.hilt.EntryPoint class BootReceiver : BroadcastReceiver() { @EntryPoint @InstallIn(SingletonComponent::class) interface BootReceiverEntryPoint { fun settingsRepository(): SettingsRepository } override fun onReceive(context: Context, intent: Intent?) { // Redémarrage de l'appareil, ou DataControl vient d'être mis à jour (déploiement depuis le serveur). if (intent?.action != Intent.ACTION_BOOT_COMPLETED && intent?.action != Intent.ACTION_MY_PACKAGE_REPLACED) return val appContext = context.applicationContext val entryPoint = EntryPointAccessors.fromApplication(appContext, BootReceiverEntryPoint::class.java) val pendingResult = goAsync() CoroutineScope(Dispatchers.Default).launch { try { val enabled = entryPoint.settingsRepository().settingsFlow.first().controlEnabled if (enabled) DataMonitorService.start(appContext) } finally { pendingResult.finish() } } } }