Skip to content

Commit

Permalink
Improve BootBroadcastReceiver
Browse files Browse the repository at this point in the history
  • Loading branch information
Semper-Viventem committed Jan 9, 2024
1 parent f5fe8a2 commit 6c429a3
Showing 1 changed file with 26 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,21 @@ import android.content.Context
import android.content.Intent
import f.cking.software.data.helpers.PermissionHelper
import f.cking.software.data.repo.SettingsRepository
import f.cking.software.domain.interactor.SaveReportInteractor
import f.cking.software.domain.model.JournalEntry
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import org.koin.java.KoinJavaComponent.inject
import timber.log.Timber

class BootBroadcastReceiver : BroadcastReceiver() {

private val permissionHelper: PermissionHelper by inject(PermissionHelper::class.java)
private val settingsRepository: SettingsRepository by inject(SettingsRepository::class.java)
private val saveReportInteractor: SaveReportInteractor by inject(SaveReportInteractor::class.java)
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main)

override fun onReceive(context: Context, intent: Intent) {
if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
Expand All @@ -19,8 +28,23 @@ class BootBroadcastReceiver : BroadcastReceiver() {
}

private fun tryToRunService(context: Context) {
if (settingsRepository.getRunOnStartup() && permissionHelper.checkAllPermissions()) {
BgScanService.start(context)
if (settingsRepository.getRunOnStartup()) {
if (permissionHelper.checkAllPermissions()) {
try {
BgScanService.start(context)
} catch (error: Exception) {
Timber.e(error, "Failed to start service from the boot receiver")
val report = JournalEntry.Report.Error(
title = "[Launch on system startup error]: ${error.message ?: error::class.java}",
stackTrace = error.stackTraceToString(),
)
scope.launch {
saveReportInteractor.execute(report)
}
}
} else {
Timber.e("Not all permissions granted, can't start service from the boot receiver")
}
}
}
}

0 comments on commit 6c429a3

Please sign in to comment.