diff options
author | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-11-06 08:14:27 +0000 |
---|---|---|
committer | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-11-06 08:14:27 +0000 |
commit | 9d55978063947d5865bb3fa4e0c2ebef78f78812 (patch) | |
tree | 49a07707f82375dc9d5d1048a07bbdf866bffe67 /app/src/main/java/foundation/e/advancedprivacy/common | |
parent | 0312ce64f85b5530a00bdc72eb310ba9dc1de05b (diff) | |
download | advanced-privacy-9d55978063947d5865bb3fa4e0c2ebef78f78812.tar.gz |
epic18: Manage VPN services for Tor or Tracker control
Diffstat (limited to 'app/src/main/java/foundation/e/advancedprivacy/common')
-rw-r--r-- | app/src/main/java/foundation/e/advancedprivacy/common/BootCompletedReceiver.kt | 8 | ||||
-rw-r--r-- | app/src/main/java/foundation/e/advancedprivacy/common/WarningDialog.kt | 43 |
2 files changed, 30 insertions, 21 deletions
diff --git a/app/src/main/java/foundation/e/advancedprivacy/common/BootCompletedReceiver.kt b/app/src/main/java/foundation/e/advancedprivacy/common/BootCompletedReceiver.kt index d73f770..562144d 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/common/BootCompletedReceiver.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/common/BootCompletedReceiver.kt @@ -1,4 +1,5 @@ /* + * Copyright (C) 2023 MURENA SAS * Copyright (C) 2022 E FOUNDATION * * This program is free software: you can redistribute it and/or modify @@ -21,12 +22,15 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import foundation.e.advancedprivacy.Notifications -import foundation.e.advancedprivacy.data.repositories.LocalStateRepository +import foundation.e.advancedprivacy.domain.repositories.LocalStateRepository +import org.koin.java.KoinJavaComponent.inject class BootCompletedReceiver : BroadcastReceiver() { + + private val localStateRepository by inject<LocalStateRepository>(LocalStateRepository::class.java) + override fun onReceive(context: Context, intent: Intent?) { if (intent?.action == Intent.ACTION_BOOT_COMPLETED) { - val localStateRepository = LocalStateRepository(context) if (localStateRepository.firstBoot) { Notifications.showFirstBootNotification(context) localStateRepository.firstBoot = false diff --git a/app/src/main/java/foundation/e/advancedprivacy/common/WarningDialog.kt b/app/src/main/java/foundation/e/advancedprivacy/common/WarningDialog.kt index 589aa74..9dbfea9 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/common/WarningDialog.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/common/WarningDialog.kt @@ -29,9 +29,12 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import foundation.e.advancedprivacy.R -import foundation.e.advancedprivacy.domain.entities.ShowFeaturesWarning -import foundation.e.advancedprivacy.domain.usecases.IpScramblingStateUseCase +import foundation.e.advancedprivacy.domain.entities.MainFeatures +import foundation.e.advancedprivacy.domain.entities.MainFeatures.FakeLocation +import foundation.e.advancedprivacy.domain.entities.MainFeatures.IpScrambling +import foundation.e.advancedprivacy.domain.entities.MainFeatures.TrackersControl import foundation.e.advancedprivacy.domain.usecases.ShowFeaturesWarningUseCase +import foundation.e.advancedprivacy.domain.usecases.VpnSupervisorUseCase import foundation.e.advancedprivacy.main.MainActivity import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn @@ -57,7 +60,7 @@ class WarningDialog : AppCompatActivity() { private fun createIntent( context: Context, - feature: ShowFeaturesWarning, + feature: MainFeatures, ): Intent { val intent = Intent(context, WarningDialog::class.java) intent.putExtra(PARAM_FEATURE, feature) @@ -67,13 +70,14 @@ class WarningDialog : AppCompatActivity() { } private var isWaitingForResult = false + private lateinit var feature: MainFeatures override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) window.setBackgroundDrawable(ColorDrawable(0)) - val feature = try { - intent.getParcelableExtra<ShowFeaturesWarning>(PARAM_FEATURE)!! + feature = try { + intent.getParcelableExtra<MainFeatures>(PARAM_FEATURE)!! } catch (e: Exception) { Timber.e(e, "Missing mandatory activity parameter") finish() @@ -82,7 +86,7 @@ class WarningDialog : AppCompatActivity() { showWarningDialog(feature) } - private fun showWarningDialog(feature: ShowFeaturesWarning) { + private fun showWarningDialog(feature: MainFeatures) { val builder = AlertDialog.Builder(this) builder.setOnDismissListener { if (!isWaitingForResult) finish() } @@ -92,23 +96,23 @@ class WarningDialog : AppCompatActivity() { builder.setMessage( when (feature) { - ShowFeaturesWarning.TrackersControl -> R.string.warningdialog_trackers_message - ShowFeaturesWarning.FakeLocation -> R.string.warningdialog_location_message - is ShowFeaturesWarning.IpScrambling -> R.string.warningdialog_ipscrambling_message + is TrackersControl -> R.string.warningdialog_trackers_message + is FakeLocation -> R.string.warningdialog_location_message + is IpScrambling -> R.string.warningdialog_ipscrambling_message } ) builder.setTitle( when (feature) { - ShowFeaturesWarning.TrackersControl -> R.string.warningdialog_trackers_title - ShowFeaturesWarning.FakeLocation -> R.string.warningdialog_location_title - is ShowFeaturesWarning.IpScrambling -> R.string.warningdialog_ipscrambling_title + is TrackersControl -> R.string.warningdialog_trackers_title + is FakeLocation -> R.string.warningdialog_location_title + is IpScrambling -> R.string.warningdialog_ipscrambling_title } ) builder.setPositiveButton( when (feature) { - is ShowFeaturesWarning.IpScrambling -> R.string.warningdialog_ipscrambling_cta + is IpScrambling -> R.string.warningdialog_ipscrambling_cta else -> R.string.ok } ) { _, _ -> @@ -117,7 +121,7 @@ class WarningDialog : AppCompatActivity() { .doNotShowAgain(feature) } - val vpnDisclaimerIntent = (feature as? ShowFeaturesWarning.IpScrambling) + val vpnDisclaimerIntent = (feature as? MainFeatures.IpScrambling) ?.startVpnDisclaimer if (vpnDisclaimerIntent != null) { @@ -126,7 +130,7 @@ class WarningDialog : AppCompatActivity() { } else finish() } - if (feature == ShowFeaturesWarning.TrackersControl) { + if (feature is MainFeatures.TrackersControl) { builder.setNeutralButton(R.string.warningdialog_trackers_secondary_cta) { _, _ -> MainActivity.deepLinkBuilder(this) .setDestination(R.id.trackersFragment) @@ -135,16 +139,17 @@ class WarningDialog : AppCompatActivity() { finish() } } - builder.show() } private val launchAndroidVpnDisclaimer = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> - val ipScramblingStateUseCase = get<IpScramblingStateUseCase>(IpScramblingStateUseCase::class.java) + val vpnSupervisorUseCase = get<VpnSupervisorUseCase>( + VpnSupervisorUseCase::class.java + ) if (result.resultCode == Activity.RESULT_OK) { - ipScramblingStateUseCase.startIpScrambling() + vpnSupervisorUseCase.startVpnService(feature) } else { - ipScramblingStateUseCase.toggle(false) + vpnSupervisorUseCase.cancelStartVpnService(feature) } finish() } |