Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit b512479

Browse files
committed
Bug 1944956 - Part 2: Switch to the new repository r=android-reviewers,gmalekpour,twhite
This patch swaps repository implementations, and adds an extra store action for the initial sotre update. Differential Revision: https://phabricator.services.mozilla.com/D236295
1 parent 2ff1d24 commit b512479

File tree

3 files changed

+22
-28
lines changed

3 files changed

+22
-28
lines changed

mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/store/PrivacyPreferencesMiddleware.kt

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import mozilla.components.lib.state.MiddlewareContext
1010
/**
1111
* [Middleware] that reacts to various [PrivacyPreferencesAction]s and updates any corresponding preferences.
1212
*
13-
* @param privacyPreferencesRepository [PrivacyPreferencesRepository] used to access the privacy preferences.
13+
* @param repository [PrivacyPreferencesRepository] used to access the privacy preferences.
1414
*/
1515
class PrivacyPreferencesMiddleware(
16-
private val privacyPreferencesRepository: PrivacyPreferencesRepository,
16+
private val repository: SimplePrivacyPreferencesRepository,
1717
) : Middleware<PrivacyPreferencesState, PrivacyPreferencesAction> {
1818

1919
override fun invoke(
@@ -24,27 +24,22 @@ class PrivacyPreferencesMiddleware(
2424
next(action)
2525

2626
when (action) {
27-
is PrivacyPreferencesAction.Init -> privacyPreferencesRepository.init()
28-
2927
is PrivacyPreferencesAction.CrashReportingPreferenceUpdatedTo -> {
30-
privacyPreferencesRepository.updatePrivacyPreference(
31-
PrivacyPreferencesRepository.PrivacyPreferenceUpdate(
32-
preferenceType = PrivacyPreferencesRepository.PrivacyPreference.CrashReporting,
33-
value = action.enabled,
34-
),
28+
repository.setPreference(
29+
type = PreferenceType.CrashReporting,
30+
enabled = action.enabled,
3531
)
3632
}
3733

3834
is PrivacyPreferencesAction.UsageDataPreferenceUpdatedTo -> {
39-
privacyPreferencesRepository.updatePrivacyPreference(
40-
PrivacyPreferencesRepository.PrivacyPreferenceUpdate(
41-
preferenceType = PrivacyPreferencesRepository.PrivacyPreference.UsageData,
42-
value = action.enabled,
43-
),
35+
repository.setPreference(
36+
type = PreferenceType.UsageData,
37+
enabled = action.enabled,
4438
)
4539
}
4640

4741
// no-ops
42+
is PrivacyPreferencesAction.Init,
4843
is PrivacyPreferencesAction.CrashReportingLearnMore,
4944
is PrivacyPreferencesAction.UsageDataUserLearnMore,
5045
-> {}

mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/store/SimplePrivacyPreferencesRepository.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ interface SimplePrivacyPreferencesRepository {
1717
* @param type The type of preference to retrieve.
1818
* @return Returns `true` if the preference is enabled.
1919
*/
20-
fun getPrivacyPreference(type: PreferenceType): Boolean
20+
fun getPreference(type: PreferenceType): Boolean
2121

2222
/**
2323
* Updates a specific preference.
2424
*
2525
* @param type The type of preference to modify.
2626
* @param enabled The new state of the preference.
2727
*/
28-
fun setPrivacyPreference(type: PreferenceType, enabled: Boolean)
28+
fun setPreference(type: PreferenceType, enabled: Boolean)
2929
}
3030

3131
/**
@@ -44,14 +44,14 @@ class DefaultSimplePrivacyPreferencesRepository(
4444
private val settings: Settings,
4545
) : SimplePrivacyPreferencesRepository {
4646

47-
override fun getPrivacyPreference(type: PreferenceType): Boolean {
47+
override fun getPreference(type: PreferenceType): Boolean {
4848
return when (type) {
4949
PreferenceType.CrashReporting -> settings.crashReportAlwaysSend
5050
PreferenceType.UsageData -> settings.isTelemetryEnabled
5151
}
5252
}
5353

54-
override fun setPrivacyPreference(
54+
override fun setPreference(
5555
type: PreferenceType,
5656
enabled: Boolean,
5757
) {

mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/ManagePrivacyPreferencesDialogFragment.kt

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ import android.view.ViewGroup
1111
import androidx.compose.ui.platform.ComposeView
1212
import androidx.fragment.app.DialogFragment
1313
import org.mozilla.fenix.components.lazyStore
14-
import org.mozilla.fenix.ext.requireComponents
14+
import org.mozilla.fenix.ext.settings
1515
import org.mozilla.fenix.onboarding.ManagePrivacyPreferencesDialog
16-
import org.mozilla.fenix.onboarding.store.DefaultPrivacyPreferencesRepository
16+
import org.mozilla.fenix.onboarding.store.DefaultSimplePrivacyPreferencesRepository
17+
import org.mozilla.fenix.onboarding.store.PreferenceType
1718
import org.mozilla.fenix.onboarding.store.PrivacyPreferencesAction
1819
import org.mozilla.fenix.onboarding.store.PrivacyPreferencesMiddleware
1920
import org.mozilla.fenix.onboarding.store.PrivacyPreferencesState
@@ -29,18 +30,16 @@ import org.mozilla.fenix.theme.FirefoxTheme
2930
class ManagePrivacyPreferencesDialogFragment : DialogFragment() {
3031

3132
private val store by lazyStore {
33+
val repository = DefaultSimplePrivacyPreferencesRepository(
34+
settings = requireContext().settings(),
35+
)
3236
PrivacyPreferencesStore(
3337
initialState = PrivacyPreferencesState(
34-
crashReportingEnabled = requireComponents.settings.crashReportAlwaysSend,
35-
usageDataEnabled = requireComponents.settings.isTelemetryEnabled,
38+
crashReportingEnabled = repository.getPreference(PreferenceType.CrashReporting),
39+
usageDataEnabled = repository.getPreference(PreferenceType.UsageData),
3640
),
3741
middlewares = listOf(
38-
PrivacyPreferencesMiddleware(
39-
privacyPreferencesRepository = DefaultPrivacyPreferencesRepository(
40-
context = requireContext(),
41-
lifecycleOwner = viewLifecycleOwner,
42-
),
43-
),
42+
PrivacyPreferencesMiddleware(repository),
4443
PrivacyPreferencesTelemetryMiddleware(),
4544
),
4645
)

0 commit comments

Comments
 (0)