Bug 1853299 - Part 1: Prepare rc state for reanalysis

fenix/119.0
rahulsainani 9 months ago committed by mergify[bot]
parent 8eb81afee5
commit 9b4f4e7d1e

@ -13,7 +13,6 @@ import org.mozilla.fenix.shopping.store.ReviewQualityCheckAction
import org.mozilla.fenix.shopping.store.ReviewQualityCheckAction.FetchProductAnalysis
import org.mozilla.fenix.shopping.store.ReviewQualityCheckAction.RetryProductAnalysis
import org.mozilla.fenix.shopping.store.ReviewQualityCheckState
import org.mozilla.fenix.shopping.store.ReviewQualityCheckState.OptedIn.ProductReviewState
/**
* Middleware that handles network requests for the review quality check feature.
@ -31,13 +30,13 @@ class ReviewQualityCheckNetworkMiddleware(
next: (ReviewQualityCheckAction) -> Unit,
action: ReviewQualityCheckAction,
) {
next(action)
when (action) {
is ReviewQualityCheckAction.NetworkAction -> processAction(context.store, action)
else -> {
// no-op
}
}
next(action)
}
private fun processAction(
@ -46,8 +45,6 @@ class ReviewQualityCheckNetworkMiddleware(
) {
when (action) {
FetchProductAnalysis, RetryProductAnalysis -> {
store.dispatch(ReviewQualityCheckAction.UpdateProductReview(ProductReviewState.Loading))
scope.launch {
val analysis = reviewQualityCheckService.fetchProductReview()
val productReviewState = analysis.toProductReviewState()

@ -28,6 +28,7 @@ class ReviewQualityCheckPreferencesMiddleware(
next: (ReviewQualityCheckAction) -> Unit,
action: ReviewQualityCheckAction,
) {
next(action)
when (action) {
is ReviewQualityCheckAction.PreferencesMiddlewareAction -> {
processAction(context.store, action)
@ -37,8 +38,6 @@ class ReviewQualityCheckPreferencesMiddleware(
// no-op
}
}
// Forward the actions
next(action)
}
private fun processAction(

@ -72,12 +72,12 @@ sealed interface ReviewQualityCheckAction : Action {
/**
* Triggered when the user has opted in to the review quality check feature and the UI is opened.
*/
object FetchProductAnalysis : NetworkAction
object FetchProductAnalysis : NetworkAction, UpdateAction
/**
* Triggered when the user retries to fetch product analysis after a failure.
*/
object RetryProductAnalysis : NetworkAction
object RetryProductAnalysis : NetworkAction, UpdateAction
/**
* Triggered when opening a link from the review quality check feature.

@ -165,6 +165,17 @@ sealed interface ReviewQualityCheckState : State {
val analysisUrl: String,
) : RecommendedProductState
}
/**
* Returns [ReviewQualityCheckState] applying the given [transform] function if the current
* state is [OptedIn].
*/
fun mapIfOptedIn(transform: (OptedIn) -> ReviewQualityCheckState): ReviewQualityCheckState =
if (this is OptedIn) {
transform(this)
} else {
this
}
}
/**

@ -66,10 +66,14 @@ private fun mapStateForUpdateAction(
}
is ReviewQualityCheckAction.UpdateProductReview -> {
if (state is ReviewQualityCheckState.OptedIn) {
state.copy(productReviewState = action.productReviewState)
} else {
state
state.mapIfOptedIn {
it.copy(productReviewState = action.productReviewState)
}
}
ReviewQualityCheckAction.FetchProductAnalysis, ReviewQualityCheckAction.RetryProductAnalysis -> {
state.mapIfOptedIn {
it.copy(productReviewState = ReviewQualityCheckState.OptedIn.ProductReviewState.Loading)
}
}
}

Loading…
Cancel
Save