diff options
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/widget')
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) |