aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/privacycentralapp/widget
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/widget')
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt30
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt2
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt38
3 files changed, 27 insertions, 43 deletions
diff --git a/app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt b/app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt
index 1969fe5..7efb6b0 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/widget/Widget.kt
@@ -20,10 +20,7 @@ package foundation.e.privacycentralapp
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
-import foundation.e.privacycentralapp.domain.usecases.FakeLocationStateUseCase
import foundation.e.privacycentralapp.domain.usecases.GetQuickPrivacyStateUseCase
-import foundation.e.privacycentralapp.domain.usecases.IpScramblingStateUseCase
-import foundation.e.privacycentralapp.domain.usecases.TrackersStateUseCase
import foundation.e.privacycentralapp.domain.usecases.TrackersStatisticsUseCase
import foundation.e.privacycentralapp.widget.State
import foundation.e.privacycentralapp.widget.render
@@ -72,25 +69,22 @@ class Widget : AppWidgetProvider() {
private fun initState(
getPrivacyStateUseCase: GetQuickPrivacyStateUseCase,
- ipScramblingStateUseCase: IpScramblingStateUseCase,
trackersStatisticsUseCase: TrackersStatisticsUseCase,
- trackersStateUseCase: TrackersStateUseCase,
- fakeLocationStateUseCase: FakeLocationStateUseCase,
coroutineScope: CoroutineScope
): StateFlow<State> {
return combine(
- getPrivacyStateUseCase.quickPrivacyEnabledFlow,
- trackersStateUseCase.areAllTrackersBlocked,
- fakeLocationStateUseCase.locationMode,
- ipScramblingStateUseCase.internetPrivacyMode
- ) { isQuickPrivacyEnabled, isAllTrackersBlocked, locationMode, internetPrivacyMode ->
+ getPrivacyStateUseCase.quickPrivacyState,
+ getPrivacyStateUseCase.isTrackersDenied,
+ getPrivacyStateUseCase.isLocationHidden,
+ getPrivacyStateUseCase.isIpHidden,
+ ) { quickPrivacyState, isTrackersDenied, isLocationHidden, isIpHidden ->
State(
- isQuickPrivacyEnabled = isQuickPrivacyEnabled,
- isAllTrackersBlocked = isAllTrackersBlocked,
- locationMode = locationMode,
- internetPrivacyMode = internetPrivacyMode
+ quickPrivacyState = quickPrivacyState,
+ isTrackersDenied = isTrackersDenied,
+ isLocationHidden = isLocationHidden,
+ isIpHidden = isIpHidden
)
}.sample(50)
.combine(
@@ -112,17 +106,11 @@ class Widget : AppWidgetProvider() {
fun startListening(
appContext: Context,
getPrivacyStateUseCase: GetQuickPrivacyStateUseCase,
- ipScramblingStateUseCase: IpScramblingStateUseCase,
trackersStatisticsUseCase: TrackersStatisticsUseCase,
- trackersStateUseCase: TrackersStateUseCase,
- fakeLocationStateUseCase: FakeLocationStateUseCase
) {
state = initState(
getPrivacyStateUseCase,
- ipScramblingStateUseCase,
trackersStatisticsUseCase,
- trackersStateUseCase,
- fakeLocationStateUseCase,
GlobalScope
)
diff --git a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt
index 87e88df..a4e3079 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetCommandReceiver.kt
@@ -27,7 +27,7 @@ class WidgetCommandReceiver : BroadcastReceiver() {
when (intent?.action) {
ACTION_TOGGLE_PRIVACY -> {
(context?.applicationContext as? PrivacyCentralApplication)
- ?.dependencyContainer?.getQuickPrivacyStateUseCase?.toggle()
+ ?.dependencyContainer?.getQuickPrivacyStateUseCase?.toggleReturnIsFirstActivation()
}
else -> {}
}
diff --git a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt
index 2529f6c..57ddd0c 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/widget/WidgetUI.kt
@@ -27,24 +27,20 @@ import android.view.View
import android.widget.RemoteViews
import foundation.e.privacycentralapp.R
import foundation.e.privacycentralapp.Widget
-import foundation.e.privacycentralapp.domain.entities.InternetPrivacyMode
-import foundation.e.privacycentralapp.domain.entities.LocationMode
+import foundation.e.privacycentralapp.domain.entities.QuickPrivacyState
import foundation.e.privacycentralapp.extensions.dpToPxF
import foundation.e.privacycentralapp.main.MainActivity
import foundation.e.privacycentralapp.widget.WidgetCommandReceiver.Companion.ACTION_TOGGLE_PRIVACY
import kotlinx.coroutines.FlowPreview
data class State(
- val isQuickPrivacyEnabled: Boolean = false,
- val isAllTrackersBlocked: Boolean = false,
- val locationMode: LocationMode = LocationMode.REAL_LOCATION,
- val internetPrivacyMode: InternetPrivacyMode = InternetPrivacyMode.REAL_IP,
+ val quickPrivacyState: QuickPrivacyState = QuickPrivacyState.DISABLED,
+ val isTrackersDenied: Boolean = false,
+ val isLocationHidden: Boolean = false,
+ val isIpHidden: Boolean? = false,
val dayStatistics: List<Pair<Int, Int>> = emptyList(),
val activeTrackersCount: Int = 0,
-) {
- val isTrackersDenied get() = isQuickPrivacyEnabled && isAllTrackersBlocked
- val isLocationHidden get() = isQuickPrivacyEnabled && locationMode != LocationMode.REAL_LOCATION
-}
+)
@FlowPreview
fun render(
@@ -62,18 +58,22 @@ fun render(
setImageViewResource(
R.id.state_icon,
- if (state.isQuickPrivacyEnabled) R.drawable.ic_shield_on else R.drawable.ic_shield_off
+ if (state.quickPrivacyState.isEnabled()) R.drawable.ic_shield_on_white
+ else R.drawable.ic_shield_off_white
)
setTextViewText(
R.id.state_label,
context.getString(
- if (state.isQuickPrivacyEnabled) R.string.widget_state_title_on
- else R.string.widget_state_title_off
+ when (state.quickPrivacyState) {
+ QuickPrivacyState.DISABLED -> R.string.widget_state_title_off
+ QuickPrivacyState.FULL_ENABLED -> R.string.widget_state_title_on
+ QuickPrivacyState.ENABLED -> R.string.widget_state_title_custom
+ }
)
)
setImageViewResource(
R.id.toggle_privacy_central,
- if (state.isQuickPrivacyEnabled) R.drawable.ic_switch_enabled
+ if (state.quickPrivacyState.isEnabled()) R.drawable.ic_switch_enabled
else R.drawable.ic_switch_disabled
)
@@ -108,16 +108,12 @@ fun render(
setTextViewText(
R.id.state_ip_address,
context.getString(
- if (state.internetPrivacyMode != InternetPrivacyMode.HIDE_IP)
- R.string.widget_state_ipaddress_off
- else R.string.widget_state_ipaddress_on
+ if (state.isIpHidden == true) R.string.widget_state_ipaddress_on
+ else R.string.widget_state_ipaddress_off
)
)
- val loading = state.internetPrivacyMode in listOf(
- InternetPrivacyMode.HIDE_IP_LOADING,
- InternetPrivacyMode.REAL_IP_LOADING
- )
+ val loading = state.isIpHidden == null
setViewVisibility(R.id.state_ip_address, if (loading) View.GONE else View.VISIBLE)