Bug 1857019 - Update Fakespot SUMO links

fenix/120.0
Alexandru2909 9 months ago committed by mergify[bot]
parent 8136b96237
commit 135514b69e

@ -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) {

@ -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,
)
}

@ -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<ReviewQualityCheckState, ReviewQualityCheckAction> {
) : ReviewQualityCheckMiddleware {
override fun invoke(
context: MiddlewareContext<ReviewQualityCheckState, ReviewQualityCheckAction>,
@ -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()

@ -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()

Loading…
Cancel
Save