tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit ba6019b1c2cb781f9717bb185729dc0579ccc0c5
parent 3c9266b72d158f9d47d9b6337967a907680484e2
Author: Marcin KoziƄski <mkozinski@mozilla.com>
Date:   Wed, 12 Nov 2025 10:31:45 +0000

Bug 1998628 - Part 2: Refactor ReviewPromptMiddleware to separate triggers from prompt type r=android-reviewers,twhite

Differential Revision: https://phabricator.services.mozilla.com/D271574

Diffstat:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/reviewprompt/ReviewPromptMiddleware.kt | 29+++++++++++++----------------
1 file changed, 13 insertions(+), 16 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/reviewprompt/ReviewPromptMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/reviewprompt/ReviewPromptMiddleware.kt @@ -100,39 +100,36 @@ class ReviewPromptMiddleware( return } - createJexlHelper().use { jexlHelper -> + val shouldShowPrompt: Boolean = createJexlHelper().use { jexlHelper -> // Keep the legacy criteria around, but use the nimbus data and jexl to trigger. // Leaving the original if-else logic and early return for readability. if (!isReviewPromptFeatureEnabled()) { - // We build the legacy criteria using the same triggers as before. - val legacyCriteria = buildTriggerLegacyCriteria( - jexlHelper, - ).all { it } - if (legacyCriteria) { - context.dispatch(ShowPlayStorePrompt) - } else { - context.dispatch(DoNotShowReviewPrompt) - } - return@use + val legacyCriteriaSatisfied = buildTriggerLegacyCriteria(jexlHelper).all { it } + return@use legacyCriteriaSatisfied } // Otherwise, we use the new criteria. val allMainCriteriaSatisfied = buildTriggerMainCriteria(jexlHelper).all { it } if (!allMainCriteriaSatisfied) { - context.dispatch(DoNotShowReviewPrompt) - return@use + return@use false } val atLeastOneOfSubCriteriaSatisfied = buildTriggerSubCriteria(jexlHelper).any { it } - if (atLeastOneOfSubCriteriaSatisfied) { + return@use atLeastOneOfSubCriteriaSatisfied + } + + if (shouldShowPrompt) { + if (!isReviewPromptFeatureEnabled()) { + context.dispatch(ShowPlayStorePrompt) + } else { if (isTelemetryEnabled()) { context.dispatch(ShowCustomReviewPrompt) } else { context.dispatch(ShowPlayStorePrompt) } - } else { - context.dispatch(DoNotShowReviewPrompt) } + } else { + context.dispatch(DoNotShowReviewPrompt) } } }