From 135514b69ee293b3c06d83e6e6b738fe6b50c52b Mon Sep 17 00:00:00 2001 From: Alexandru2909 Date: Wed, 4 Oct 2023 21:03:05 +0300 Subject: [PATCH] Bug 1857019 - Update Fakespot SUMO links --- .../mozilla/fenix/settings/SupportUtils.kt | 1 + .../ReviewQualityCheckMiddlewareProvider.kt | 8 +---- .../ReviewQualityCheckNavigationMiddleware.kt | 36 ++++++++++--------- ...iewQualityCheckNavigationMiddlewareTest.kt | 8 ----- 4 files changed, 22 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt b/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt index a47f3b634..3fd4eb94b 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt @@ -57,6 +57,7 @@ object SupportUtils { HTTPS_ONLY_MODE("https-only-mode-firefox-android"), COOKIE_BANNER("cookie-banner-reduction-firefox-android"), UNSIGNED_ADDONS("unsigned-addons"), + REVIEW_QUALITY_CHECK("review_checker_mobile"), } enum class MozillaPage(internal val path: String) { diff --git a/app/src/main/java/org/mozilla/fenix/shopping/di/ReviewQualityCheckMiddlewareProvider.kt b/app/src/main/java/org/mozilla/fenix/shopping/di/ReviewQualityCheckMiddlewareProvider.kt index 1de585aa9..bc8186905 100644 --- a/app/src/main/java/org/mozilla/fenix/shopping/di/ReviewQualityCheckMiddlewareProvider.kt +++ b/app/src/main/java/org/mozilla/fenix/shopping/di/ReviewQualityCheckMiddlewareProvider.kt @@ -40,11 +40,7 @@ object ReviewQualityCheckMiddlewareProvider { listOf( providePreferencesMiddleware(settings, browserStore, scope), provideNetworkMiddleware(browserStore, context, scope), - provideNavigationMiddleware( - TabsUseCases.SelectOrAddUseCase(browserStore), - context, - scope, - ), + provideNavigationMiddleware(TabsUseCases.SelectOrAddUseCase(browserStore), context), ) private fun providePreferencesMiddleware( @@ -70,10 +66,8 @@ object ReviewQualityCheckMiddlewareProvider { private fun provideNavigationMiddleware( selectOrAddUseCase: TabsUseCases.SelectOrAddUseCase, context: Context, - scope: CoroutineScope, ) = ReviewQualityCheckNavigationMiddleware( selectOrAddUseCase = selectOrAddUseCase, context = context, - scope = scope, ) } diff --git a/app/src/main/java/org/mozilla/fenix/shopping/middleware/ReviewQualityCheckNavigationMiddleware.kt b/app/src/main/java/org/mozilla/fenix/shopping/middleware/ReviewQualityCheckNavigationMiddleware.kt index be168024a..2aa671507 100644 --- a/app/src/main/java/org/mozilla/fenix/shopping/middleware/ReviewQualityCheckNavigationMiddleware.kt +++ b/app/src/main/java/org/mozilla/fenix/shopping/middleware/ReviewQualityCheckNavigationMiddleware.kt @@ -5,15 +5,18 @@ package org.mozilla.fenix.shopping.middleware import android.content.Context -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.launch +import android.net.Uri import mozilla.components.feature.tabs.TabsUseCases -import mozilla.components.lib.state.Middleware import mozilla.components.lib.state.MiddlewareContext import org.mozilla.fenix.settings.SupportUtils import org.mozilla.fenix.shopping.store.ReviewQualityCheckAction +import org.mozilla.fenix.shopping.store.ReviewQualityCheckMiddleware import org.mozilla.fenix.shopping.store.ReviewQualityCheckState +private const val PARAM_UTM_CAMPAIGN_KEY = "utm_campaign" +private const val PARAM_UTM_CAMPAIGN_VALUE = "fakespot-by-mozilla" +private const val PARAM_UTM_TERM_KEY = "utm_term" +private const val PARAM_UTM_TERM_VALUE = "core-sheet" private const val POWERED_BY_URL = "https://www.fakespot.com/review-checker?utm_source=review-checker" + "&utm_campaign=fakespot-by-mozilla&utm_medium=inproduct&utm_term=core-sheet" @@ -25,13 +28,11 @@ private const val TERMS_OF_USE_URL = "https://www.fakespot.com/terms" * * @property selectOrAddUseCase UseCase instance used to open new tabs. * @property context Context used to get SUMO urls. - * @property scope [CoroutineScope] used to launch coroutines. */ class ReviewQualityCheckNavigationMiddleware( private val selectOrAddUseCase: TabsUseCases.SelectOrAddUseCase, private val context: Context, - private val scope: CoroutineScope, -) : Middleware { +) : ReviewQualityCheckMiddleware { override fun invoke( context: MiddlewareContext, @@ -49,7 +50,7 @@ class ReviewQualityCheckNavigationMiddleware( private fun processAction( action: ReviewQualityCheckAction.NavigationMiddlewareAction, - ) = scope.launch { + ) { selectOrAddUseCase.invoke(actionToUrl(action)) } @@ -61,21 +62,24 @@ class ReviewQualityCheckNavigationMiddleware( private fun actionToUrl( action: ReviewQualityCheckAction.NavigationMiddlewareAction, ) = when (action) { - // Placeholder SUMO urls to be used until the Fakespot SUMO pages are added in 1854277 - is ReviewQualityCheckAction.OpenExplainerLearnMoreLink -> SupportUtils.getSumoURLForTopic( - context, - SupportUtils.SumoTopic.HELP, + is ReviewQualityCheckAction.OpenExplainerLearnMoreLink, + ReviewQualityCheckAction.OpenOnboardingLearnMoreLink, + -> appendUTMParams( + SupportUtils.getSumoURLForTopic( + context, + SupportUtils.SumoTopic.REVIEW_QUALITY_CHECK, + ), ) is ReviewQualityCheckAction.OpenOnboardingTermsLink -> TERMS_OF_USE_URL - is ReviewQualityCheckAction.OpenOnboardingLearnMoreLink -> SupportUtils.getSumoURLForTopic( - context, - SupportUtils.SumoTopic.HELP, - ) - is ReviewQualityCheckAction.OpenOnboardingPrivacyPolicyLink -> PRIVACY_POLICY_URL is ReviewQualityCheckAction.OpenPoweredByLink -> POWERED_BY_URL } } + +private fun appendUTMParams(url: String): String = Uri.parse(url).buildUpon() + .appendQueryParameter(PARAM_UTM_CAMPAIGN_KEY, PARAM_UTM_CAMPAIGN_VALUE) + .appendQueryParameter(PARAM_UTM_TERM_KEY, PARAM_UTM_TERM_VALUE) + .build().toString() diff --git a/app/src/test/java/org/mozilla/fenix/shopping/middleware/ReviewQualityCheckNavigationMiddlewareTest.kt b/app/src/test/java/org/mozilla/fenix/shopping/middleware/ReviewQualityCheckNavigationMiddlewareTest.kt index c2f9cbc8e..b3f851dee 100644 --- a/app/src/test/java/org/mozilla/fenix/shopping/middleware/ReviewQualityCheckNavigationMiddlewareTest.kt +++ b/app/src/test/java/org/mozilla/fenix/shopping/middleware/ReviewQualityCheckNavigationMiddlewareTest.kt @@ -5,10 +5,8 @@ import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.support.test.ext.joinBlocking import mozilla.components.support.test.libstate.ext.waitUntilIdle import mozilla.components.support.test.robolectric.testContext -import mozilla.components.support.test.rule.MainCoroutineRule import org.junit.Assert.assertEquals import org.junit.Before -import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mozilla.fenix.helpers.FenixRobolectricTestRunner @@ -18,10 +16,6 @@ import org.mozilla.fenix.shopping.store.ReviewQualityCheckStore @RunWith(FenixRobolectricTestRunner::class) class ReviewQualityCheckNavigationMiddlewareTest { - @get:Rule - val coroutinesTestRule = MainCoroutineRule() - private val dispatcher = coroutinesTestRule.testDispatcher - private val scope = coroutinesTestRule.scope private lateinit var store: ReviewQualityCheckStore private lateinit var browserStore: BrowserStore private lateinit var addTabUseCase: TabsUseCases.SelectOrAddUseCase @@ -34,7 +28,6 @@ class ReviewQualityCheckNavigationMiddlewareTest { middleware = ReviewQualityCheckNavigationMiddleware( selectOrAddUseCase = addTabUseCase, context = testContext, - scope = scope, ) store = ReviewQualityCheckStore( middleware = listOf(middleware), @@ -45,7 +38,6 @@ class ReviewQualityCheckNavigationMiddlewareTest { fun `WHEN opening an external link THEN the link should be opened in a new tab`() { val action = ReviewQualityCheckAction.OpenPoweredByLink store.waitUntilIdle() - dispatcher.scheduler.advanceUntilIdle() assertEquals(0, browserStore.state.tabs.size) store.dispatch(action).joinBlocking()