Bug 1852074 - Add actions to the shopping CFRs

fenix/120.0
Alexandru2909 8 months ago committed by mergify[bot]
parent 585e29def3
commit 5df74fbfab

@ -64,6 +64,7 @@ private const val CFR_MINIMUM_NUMBER_OPENED_TABS = 5
* @param settings used to read and write persistent user settings
* @param toolbar will serve as anchor for the CFRs
* @param sessionId optional custom tab id used to identify the custom tab in which to show a CFR.
* @param onShoppingCfrActionClicked Triggered when the user taps on the shopping CFR action.
* @param shoppingExperienceFeature Used to determine if [ShoppingExperienceFeature] is enabled.
*/
class BrowserToolbarCFRPresenter(
@ -73,6 +74,7 @@ class BrowserToolbarCFRPresenter(
private val toolbar: BrowserToolbar,
private val isPrivate: Boolean,
private val sessionId: String? = null,
private val onShoppingCfrActionClicked: () -> Unit,
private val shoppingExperienceFeature: ShoppingExperienceFeature = DefaultShoppingExperienceFeature(
context.settings(),
),
@ -338,6 +340,26 @@ class BrowserToolbarCFRPresenter(
)
}
},
action = {
FirefoxTheme {
Text(
text = if (shouldShowOptedInCFR) {
stringResource(id = R.string.review_quality_check_second_cfr_action)
} else {
stringResource(id = R.string.review_quality_check_first_cfr_action)
},
color = FirefoxTheme.colors.textOnColorPrimary,
modifier = Modifier
.clickable {
onShoppingCfrActionClicked()
popup?.dismiss()
},
style = FirefoxTheme.typography.body2.copy(
textDecoration = TextDecoration.Underline,
),
)
}
},
).run {
popup = this
show()

@ -53,6 +53,11 @@ interface BrowserToolbarController {
* @see [BrowserToolbarInteractor.onEraseButtonClicked]
*/
fun handleEraseButtonClick()
/**
* @see [BrowserToolbarInteractor.onShoppingCfrActionClicked]
*/
fun handleShoppingCfrActionClick()
}
@Suppress("LongParameterList")
@ -192,6 +197,13 @@ class DefaultBrowserToolbarController(
navController.navigate(directions)
}
override fun handleShoppingCfrActionClick() {
activity.settings().shouldShowReviewQualityCheckCFR = false
navController.navigate(
BrowserFragmentDirections.actionBrowserFragmentToReviewQualityCheckDialogFragment(),
)
}
companion object {
internal const val TELEMETRY_BROWSER_IDENTIFIER = "browserMenu"
}

@ -76,6 +76,7 @@ abstract class ToolbarIntegration(
}
}
@Suppress("LongParameterList")
class DefaultToolbarIntegration(
context: Context,
toolbar: BrowserToolbar,
@ -101,6 +102,7 @@ class DefaultToolbarIntegration(
toolbar = toolbar,
isPrivate = isPrivate,
sessionId = sessionId,
onShoppingCfrActionClicked = interactor::onShoppingCfrActionClicked,
)
init {

@ -32,6 +32,11 @@ interface BrowserToolbarInteractor {
* Deletes all tabs and navigates to the Home screen. Called when a user taps on the erase button.
*/
fun onEraseButtonClicked()
/**
* Opens the shopping bottom sheet. Called when the user interacts with the shopping cfr action.
*/
fun onShoppingCfrActionClicked()
}
/**
@ -86,4 +91,8 @@ class DefaultBrowserToolbarInteractor(
override fun onEraseButtonClicked() {
browserToolbarController.handleEraseButtonClick()
}
override fun onShoppingCfrActionClicked() {
browserToolbarController.handleShoppingCfrActionClick()
}
}

@ -348,6 +348,7 @@ class BrowserToolbarCFRPresenterTest {
toolbar = toolbar,
sessionId = sessionId,
isPrivate = isPrivate,
onShoppingCfrActionClicked = {},
shoppingExperienceFeature = shoppingExperienceFeature,
),
)

@ -378,6 +378,17 @@ class DefaultBrowserToolbarControllerTest {
}
}
@Test
fun handleShoppingCfrActionClick() {
val controller = createController()
controller.handleShoppingCfrActionClick()
verify {
activity.settings().shouldShowReviewQualityCheckCFR = false
navController.navigate(BrowserFragmentDirections.actionBrowserFragmentToReviewQualityCheckDialogFragment())
}
}
private fun createController(
activity: HomeActivity = this.activity,
customTabSessionId: String? = null,

@ -87,4 +87,11 @@ class DefaultBrowserToolbarInteractorTest {
verify { browserToolbarController.handleEraseButtonClick() }
}
@Test
fun onShoppingCfrActionClicked() {
interactor.onShoppingCfrActionClicked()
verify { browserToolbarController.handleShoppingCfrActionClick() }
}
}

Loading…
Cancel
Save