Files
DataControl/app/src/main/java/com/jttools/datacontrol/service/BootReceiver.kt
T

41 lines
1.5 KiB
Kotlin

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()
}
}
}
}