Skip to content

Commit ed2520f

Browse files
committed
Merge branch 'release/5.206.1' into main
2 parents 827179b + 8c7b6d6 commit ed2520f

File tree

25 files changed

+115
-143
lines changed

25 files changed

+115
-143
lines changed

app/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,6 @@ dependencies {
253253

254254
implementation project(':autoconsent-api')
255255
implementation project(':autoconsent-impl')
256-
implementation project(':autoconsent-store')
257256

258257
implementation project(':cookies-api')
259258
implementation project(':cookies-impl')

app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2433,39 +2433,39 @@ class BrowserTabViewModelTest {
24332433
fun whenUserClickedCtaButtonThenFirePixel() {
24342434
val cta = DaxBubbleCta.DaxIntroSearchOptionsCta(mockOnboardingStore, mockAppInstallStore)
24352435
setCta(cta)
2436-
testee.onUserClickCtaOkButton()
2436+
testee.onUserClickCtaOkButton(cta)
24372437
verify(mockPixel).fire(cta.okPixel!!, cta.pixelOkParameters())
24382438
}
24392439

24402440
@Test
24412441
fun whenUserClickedAddWidgetCtaButtonThenLaunchAddWidgetCommand() {
24422442
val cta = HomePanelCta.AddWidgetAuto
24432443
setCta(cta)
2444-
testee.onUserClickCtaOkButton()
2444+
testee.onUserClickCtaOkButton(cta)
24452445
assertCommandIssued<Command.LaunchAddWidget>()
24462446
}
24472447

24482448
@Test
24492449
fun whenUserClickedLegacyAddWidgetCtaButtonThenLaunchAddWidgetCommand() {
24502450
val cta = HomePanelCta.AddWidgetInstructions
24512451
setCta(cta)
2452-
testee.onUserClickCtaOkButton()
2452+
testee.onUserClickCtaOkButton(cta)
24532453
assertCommandIssued<Command.LaunchAddWidget>()
24542454
}
24552455

24562456
@Test
24572457
fun whenUserDismissedCtaThenFirePixel() = runTest {
24582458
val cta = HomePanelCta.AddWidgetAuto
24592459
setCta(cta)
2460-
testee.onUserDismissedCta()
2460+
testee.onUserDismissedCta(cta)
24612461
verify(mockPixel).fire(cta.cancelPixel!!, cta.pixelCancelParameters())
24622462
}
24632463

24642464
@Test
24652465
fun whenUserDismissedCtaThenRegisterInDatabase() = runTest {
24662466
val cta = HomePanelCta.AddWidgetAuto
24672467
setCta(cta)
2468-
testee.onUserDismissedCta()
2468+
testee.onUserDismissedCta(cta)
24692469
verify(mockDismissedCtaDao).insert(DismissedCta(cta.ctaId))
24702470
}
24712471

@@ -4255,7 +4255,7 @@ class BrowserTabViewModelTest {
42554255
givenRemoteMessage(remoteMessage)
42564256
testee.onViewVisible()
42574257

4258-
testee.onMessageShown()
4258+
testee.onMessageShown(remoteMessage)
42594259

42604260
verify(mockRemoteMessagingRepository).markAsShown(remoteMessage)
42614261
verify(mockPixel).fire(AppPixelName.REMOTE_MESSAGE_SHOWN_UNIQUE, mapOf("message" to "id1"))
@@ -4268,7 +4268,7 @@ class BrowserTabViewModelTest {
42684268
givenRemoteMessage(remoteMessage)
42694269
testee.onViewVisible()
42704270

4271-
testee.onMessageCloseButtonClicked()
4271+
testee.onMessageCloseButtonClicked(remoteMessage)
42724272

42734273
verify(mockRemoteMessagingRepository).dismissMessage("id1")
42744274
verify(mockPixel).fire(AppPixelName.REMOTE_MESSAGE_DISMISSED, mapOf("message" to "id1"))
@@ -4280,7 +4280,7 @@ class BrowserTabViewModelTest {
42804280
givenRemoteMessage(remoteMessage)
42814281
testee.onViewVisible()
42824282

4283-
testee.onMessagePrimaryButtonClicked()
4283+
testee.onMessagePrimaryButtonClicked(remoteMessage)
42844284

42854285
verify(mockRemoteMessagingRepository).dismissMessage("id1")
42864286
verify(mockPixel).fire(AppPixelName.REMOTE_MESSAGE_PRIMARY_ACTION_CLICKED, mapOf("message" to "id1"))
@@ -4292,7 +4292,7 @@ class BrowserTabViewModelTest {
42924292
givenRemoteMessage(remoteMessage)
42934293
testee.onViewVisible()
42944294

4295-
testee.onMessageSecondaryButtonClicked()
4295+
testee.onMessageSecondaryButtonClicked(remoteMessage)
42964296

42974297
verify(mockRemoteMessagingRepository).dismissMessage("id1")
42984298
verify(mockPixel).fire(AppPixelName.REMOTE_MESSAGE_SECONDARY_ACTION_CLICKED, mapOf("message" to "id1"))
@@ -4304,7 +4304,7 @@ class BrowserTabViewModelTest {
43044304
givenRemoteMessage(remoteMessage)
43054305
testee.onViewVisible()
43064306

4307-
testee.onMessageActionButtonClicked()
4307+
testee.onMessageActionButtonClicked(remoteMessage)
43084308

43094309
verify(mockRemoteMessagingRepository, never()).dismissMessage("id1")
43104310
verify(mockPixel).fire(AppPixelName.REMOTE_MESSAGE_ACTION_CLICKED, mapOf("message" to "id1"))
@@ -5306,7 +5306,7 @@ class BrowserTabViewModelTest {
53065306
val cta = OnboardingDaxDialogCta.DaxTrackersBlockedCta(mockOnboardingStore, mockAppInstallStore, emptyList())
53075307
setCta(cta)
53085308

5309-
testee.onUserDismissedCta()
5309+
testee.onUserDismissedCta(cta)
53105310
assertFalse(browserViewState().showPrivacyShield.isHighlighted())
53115311
}
53125312

app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3786,19 +3786,19 @@ class BrowserTabFragment :
37863786
if (shouldRender) {
37873787
Timber.i("RMF: render $message")
37883788
newBrowserTab.messageCta.show()
3789-
viewModel.onMessageShown()
3789+
viewModel.onMessageShown(message)
37903790
newBrowserTab.messageCta.setMessage(message.asMessage())
37913791
newBrowserTab.messageCta.onCloseButtonClicked {
3792-
viewModel.onMessageCloseButtonClicked()
3792+
viewModel.onMessageCloseButtonClicked(message)
37933793
}
37943794
newBrowserTab.messageCta.onPrimaryActionClicked {
3795-
viewModel.onMessagePrimaryButtonClicked()
3795+
viewModel.onMessagePrimaryButtonClicked(message)
37963796
}
37973797
newBrowserTab.messageCta.onSecondaryActionClicked {
3798-
viewModel.onMessageSecondaryButtonClicked()
3798+
viewModel.onMessageSecondaryButtonClicked(message)
37993799
}
38003800
newBrowserTab.messageCta.onPromoActionClicked {
3801-
viewModel.onMessageActionButtonClicked()
3801+
viewModel.onMessageActionButtonClicked(message)
38023802
}
38033803
}
38043804
}
@@ -3843,14 +3843,14 @@ class BrowserTabFragment :
38433843
} else {
38443844
{}
38453845
}
3846-
configuration.showOnboardingCta(binding, { viewModel.onUserClickCtaOkButton() }, onTypingAnimationFinished)
3846+
configuration.showOnboardingCta(binding, { viewModel.onUserClickCtaOkButton(configuration) }, onTypingAnimationFinished)
38473847
if (configuration is OnboardingDaxDialogCta.DaxSiteSuggestionsCta) {
38483848
configuration.setOnOptionClicked(
38493849
daxDialogOnboardingCta,
38503850
) {
38513851
userEnteredQuery(it.link)
38523852
pixel.fire(it.pixel)
3853-
viewModel.onUserClickCtaOkButton()
3853+
viewModel.onUserClickCtaOkButton(configuration)
38543854
}
38553855
}
38563856
if (appTheme.isLightModeEnabled()) {
@@ -3884,17 +3884,17 @@ class BrowserTabFragment :
38843884
object : PromoBottomSheetDialog.EventListener() {
38853885
override fun onPrimaryButtonClicked() {
38863886
super.onPrimaryButtonClicked()
3887-
viewModel.onUserClickCtaOkButton()
3887+
viewModel.onUserClickCtaOkButton(configuration)
38883888
}
38893889

38903890
override fun onSecondaryButtonClicked() {
38913891
super.onSecondaryButtonClicked()
3892-
viewModel.onUserClickCtaSecondaryButton()
3892+
viewModel.onUserClickCtaSecondaryButton(configuration)
38933893
}
38943894

38953895
override fun onBottomSheetDismissed() {
38963896
super.onBottomSheetDismissed()
3897-
viewModel.onUserClickCtaSecondaryButton()
3897+
viewModel.onUserClickCtaSecondaryButton(configuration)
38983898
}
38993899
},
39003900
)

app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ import com.duckduckgo.privacyprotectionspopup.api.PrivacyProtectionsPopupExperim
176176
import com.duckduckgo.privacyprotectionspopup.api.PrivacyProtectionsPopupManager
177177
import com.duckduckgo.privacyprotectionspopup.api.PrivacyProtectionsPopupUiEvent
178178
import com.duckduckgo.privacyprotectionspopup.api.PrivacyProtectionsToggleUsageListener
179+
import com.duckduckgo.remote.messaging.api.RemoteMessage
179180
import com.duckduckgo.savedsites.api.SavedSitesRepository
180181
import com.duckduckgo.savedsites.api.models.BookmarkFolder
181182
import com.duckduckgo.savedsites.api.models.SavedSite
@@ -2448,8 +2449,7 @@ class BrowserTabViewModel @Inject constructor(
24482449
}
24492450
}
24502451

2451-
fun onUserClickCtaOkButton() {
2452-
val cta = currentCtaViewState().cta ?: return
2452+
fun onUserClickCtaOkButton(cta: Cta) {
24532453
ctaViewModel.onUserClickCtaOkButton(cta)
24542454
command.value = when (cta) {
24552455
is HomePanelCta.AddWidgetAuto, is HomePanelCta.AddWidgetInstructions -> LaunchAddWidget
@@ -2458,57 +2458,50 @@ class BrowserTabViewModel @Inject constructor(
24582458
}
24592459
}
24602460

2461-
fun onUserClickCtaSecondaryButton() {
2461+
fun onUserClickCtaSecondaryButton(cta: Cta) {
24622462
viewModelScope.launch {
2463-
val cta = currentCtaViewState().cta ?: return@launch
24642463
ctaViewModel.onUserDismissedCta(cta)
24652464
}
24662465
}
24672466

2468-
fun onMessageShown() {
2469-
val message = currentCtaViewState().message ?: return
2467+
fun onMessageShown(message: RemoteMessage) {
24702468
viewModelScope.launch {
24712469
remoteMessagingModel.get().onMessageShown(message)
24722470
}
24732471
}
24742472

2475-
fun onMessageCloseButtonClicked() {
2476-
val message = currentCtaViewState().message ?: return
2473+
fun onMessageCloseButtonClicked(message: RemoteMessage) {
24772474
viewModelScope.launch {
24782475
remoteMessagingModel.get().onMessageDismissed(message)
24792476
refreshCta()
24802477
}
24812478
}
24822479

2483-
fun onMessagePrimaryButtonClicked() {
2484-
val message = currentCtaViewState().message ?: return
2480+
fun onMessagePrimaryButtonClicked(message: RemoteMessage) {
24852481
viewModelScope.launch {
24862482
val action = remoteMessagingModel.get().onPrimaryActionClicked(message) ?: return@launch
24872483
command.value = commandActionMapper.asBrowserTabCommand(action) ?: return@launch
24882484
refreshCta()
24892485
}
24902486
}
24912487

2492-
fun onMessageSecondaryButtonClicked() {
2493-
val message = currentCtaViewState().message ?: return
2488+
fun onMessageSecondaryButtonClicked(message: RemoteMessage) {
24942489
viewModelScope.launch {
24952490
val action = remoteMessagingModel.get().onSecondaryActionClicked(message) ?: return@launch
24962491
command.value = commandActionMapper.asBrowserTabCommand(action) ?: return@launch
24972492
refreshCta()
24982493
}
24992494
}
25002495

2501-
fun onMessageActionButtonClicked() {
2502-
val message = currentCtaViewState().message ?: return
2496+
fun onMessageActionButtonClicked(message: RemoteMessage) {
25032497
viewModelScope.launch {
25042498
val action = remoteMessagingModel.get().onActionClicked(message) ?: return@launch
25052499
command.value = commandActionMapper.asBrowserTabCommand(action) ?: return@launch
25062500
refreshCta()
25072501
}
25082502
}
25092503

2510-
fun onUserDismissedCta() {
2511-
val cta = currentCtaViewState().cta ?: return
2504+
fun onUserDismissedCta(cta: Cta) {
25122505
viewModelScope.launch {
25132506
ctaViewModel.onUserDismissedCta(cta)
25142507
when (cta) {
@@ -3186,14 +3179,14 @@ class BrowserTabViewModel @Inject constructor(
31863179
browserViewState.value = currentBrowserViewState().copy(showPrivacyShield = HighlightableButton.Visible(highlighted = false))
31873180
}
31883181

3189-
onUserDismissedCta()
3182+
onUserDismissedCta(cta)
31903183
command.value = HideOnboardingDaxDialog(cta)
31913184
}
31923185

31933186
fun onFireMenuSelected() {
31943187
val cta = currentCtaViewState().cta
31953188
if (cta is OnboardingDaxDialogCta.DaxFireButtonCta) {
3196-
onUserDismissedCta()
3189+
onUserDismissedCta(cta)
31973190
command.value = HideOnboardingDaxDialog(cta)
31983191
}
31993192
if (currentBrowserViewState().fireButton.isHighlighted()) {

app/version/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION=5.206.0
1+
VERSION=5.206.1

autoconsent/autoconsent-impl/build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ plugins {
1818
id 'com.android.library'
1919
id 'kotlin-android'
2020
id 'com.squareup.anvil'
21+
id 'com.google.devtools.ksp' version "$ksp_version"
2122
}
2223

2324
apply from: "$rootProject.projectDir/gradle/android-library.gradle"
@@ -41,7 +42,6 @@ dependencies {
4142
implementation project(path: ':app-build-config-api')
4243
implementation project(path: ':app-store')
4344
implementation project(path: ':autoconsent-api')
44-
implementation project(path: ':autoconsent-store')
4545
implementation project(path: ':statistics')
4646
implementation project(path: ':browser-api')
4747
implementation project(path: ':navigation-api')
@@ -67,6 +67,9 @@ dependencies {
6767
implementation Square.moshi
6868
implementation "com.squareup.moshi:moshi-kotlin:_"
6969
implementation "com.squareup.moshi:moshi-adapters:_"
70+
implementation AndroidX.room.runtime
71+
implementation AndroidX.room.ktx
72+
ksp AndroidX.room.compiler
7073

7174
// Testing dependencies
7275
testImplementation project(path: ':common-test')
@@ -79,6 +82,7 @@ dependencies {
7982
testImplementation Testing.robolectric
8083
testImplementation 'app.cash.turbine:turbine:_'
8184
testImplementation project(path: ':common-test')
85+
testImplementation AndroidX.room.testing
8286

8387
coreLibraryDesugaring Android.tools.desugarJdkLibs
8488
}

autoconsent/autoconsent-impl/src/main/java/com/duckduckgo/autoconsent/impl/RealAutoconsent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import com.duckduckgo.autoconsent.impl.AutoconsentInterface.Companion.AUTOCONSEN
2525
import com.duckduckgo.autoconsent.impl.handlers.ReplyHandler
2626
import com.duckduckgo.autoconsent.impl.remoteconfig.AutoconsentExceptionsRepository
2727
import com.duckduckgo.autoconsent.impl.remoteconfig.AutoconsentFeature
28-
import com.duckduckgo.autoconsent.store.AutoconsentSettingsRepository
28+
import com.duckduckgo.autoconsent.impl.store.AutoconsentSettingsRepository
2929
import com.duckduckgo.common.utils.plugins.PluginPoint
3030
import com.duckduckgo.di.scopes.AppScope
3131
import com.duckduckgo.privacy.config.api.UnprotectedTemporary

autoconsent/autoconsent-impl/src/main/java/com/duckduckgo/autoconsent/impl/di/AutoconsentModule.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ import com.duckduckgo.autoconsent.impl.remoteconfig.AutoconsentFeature
2525
import com.duckduckgo.autoconsent.impl.remoteconfig.AutoconsentFeatureSettingsRepository
2626
import com.duckduckgo.autoconsent.impl.remoteconfig.RealAutoconsentExceptionsRepository
2727
import com.duckduckgo.autoconsent.impl.remoteconfig.RealAutoconsentFeatureSettingsRepository
28-
import com.duckduckgo.autoconsent.store.AutoconsentDatabase
29-
import com.duckduckgo.autoconsent.store.AutoconsentSettingsRepository
28+
import com.duckduckgo.autoconsent.impl.store.AutoconsentDatabase
29+
import com.duckduckgo.autoconsent.impl.store.AutoconsentSettingsRepository
3030
import com.duckduckgo.common.utils.DispatcherProvider
3131
import com.duckduckgo.di.scopes.AppScope
3232
import com.squareup.anvil.annotations.ContributesTo
@@ -41,8 +41,13 @@ object AutoconsentModule {
4141

4242
@Provides
4343
@SingleInstanceIn(AppScope::class)
44-
fun provideAutoconsentSettingsRepository(context: Context, autoconsentFeature: AutoconsentFeature): AutoconsentSettingsRepository {
45-
return AutoconsentSettingsRepository.create(context, autoconsentFeature.onByDefault().isEnabled())
44+
fun provideAutoconsentSettingsRepository(
45+
context: Context,
46+
autoconsentFeature: AutoconsentFeature,
47+
@AppCoroutineScope appCoroutineScope: CoroutineScope,
48+
dispatcherProvider: DispatcherProvider,
49+
): AutoconsentSettingsRepository {
50+
return AutoconsentSettingsRepository.create(context, autoconsentFeature, appCoroutineScope, dispatcherProvider)
4651
}
4752

4853
@Provides

autoconsent/autoconsent-impl/src/main/java/com/duckduckgo/autoconsent/impl/handlers/InitMessageHandlerPlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import com.duckduckgo.autoconsent.impl.JsReader
2424
import com.duckduckgo.autoconsent.impl.MessageHandlerPlugin
2525
import com.duckduckgo.autoconsent.impl.adapters.JSONObjectAdapter
2626
import com.duckduckgo.autoconsent.impl.remoteconfig.AutoconsentFeatureSettingsRepository
27-
import com.duckduckgo.autoconsent.store.AutoconsentSettingsRepository
27+
import com.duckduckgo.autoconsent.impl.store.AutoconsentSettingsRepository
2828
import com.duckduckgo.common.utils.DispatcherProvider
2929
import com.duckduckgo.common.utils.isHttp
3030
import com.duckduckgo.common.utils.isHttps

autoconsent/autoconsent-impl/src/main/java/com/duckduckgo/autoconsent/impl/handlers/PopUpFoundMessageHandlerPlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import android.webkit.WebView
2020
import com.duckduckgo.autoconsent.api.AutoconsentCallback
2121
import com.duckduckgo.autoconsent.impl.MessageHandlerPlugin
2222
import com.duckduckgo.autoconsent.impl.adapters.JSONObjectAdapter
23-
import com.duckduckgo.autoconsent.store.AutoconsentSettingsRepository
23+
import com.duckduckgo.autoconsent.impl.store.AutoconsentSettingsRepository
2424
import com.duckduckgo.di.scopes.AppScope
2525
import com.squareup.anvil.annotations.ContributesMultibinding
2626
import com.squareup.moshi.JsonAdapter

0 commit comments

Comments
 (0)