Commit 93535bc8 authored by clairehurst's avatar clairehurst 🌱 Committed by Pier Angelo Vendrame
Browse files

TB 44615: [android] Remove review prompt

parent 64910dfe
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -116,6 +116,12 @@ import org.mozilla.fenix.utils.isLargeScreenSize
import org.mozilla.fenix.wifi.WifiConnectionMonitor
import java.util.concurrent.TimeUnit

import android.app.Activity
import com.google.android.gms.tasks.Task
import com.google.android.gms.tasks.Tasks
import com.google.android.play.core.review.ReviewInfo
import com.google.android.play.core.review.ReviewManager

private const val AMO_COLLECTION_MAX_CACHE_AGE = 2 * 24 * 60L // Two days in minutes

/**
@@ -281,7 +287,7 @@ class Components(private val context: Context) {

    val playStoreReviewPromptController by lazyMonitored {
        PlayStoreReviewPromptController(
            manager = ReviewManagerFactory.create(context),
            manager = NoopReviewManager(context),
            numberOfAppLaunches = { settings.numberOfAppLaunches },
        )
    }
@@ -558,6 +564,19 @@ class Components(private val context: Context) {
    }
}

class NoopReviewManager(val value: Context) : ReviewManager {
    override fun launchReviewFlow(
        p0: Activity,
        p1: ReviewInfo
    ): Task<Void?> {
        return Tasks.forResult(null)
    }

    override fun requestReviewFlow(): Task<ReviewInfo?> {
        return Tasks.forResult(null)
    }
}

/**
 * Returns the [Components] object from within a [Composable].
 */
+4 −56
Original line number Diff line number Diff line
@@ -42,46 +42,8 @@ class PlayStoreReviewPromptController(
     */
    @Suppress("TooGenericExceptionCaught")
    suspend fun tryPromptReview(activity: Activity): ReviewPromptAttemptResult {
        logger.info("tryPromptReview in progress...")
        val reviewInfoTask = withContext(Dispatchers.IO) { manager.requestReviewFlow() }

        val result = try {
            val reviewInfo = reviewInfoTask.await()

            logger.info("Review flow launched.")
            // Launch the in-app flow.
            manager.launchReviewFlow(activity, reviewInfo)

            ReviewPromptAttemptResult.from(reviewInfo.toString())
        } catch (e: CancellationException) {
            throw e
        } catch (e: Exception) {
            Error(e)
        }

        when (result) {
            NotDisplayed -> {
                logger.warn("In-app review flow reported as not displayed, even though there was no error.")
            }

            is Error -> {
                val reviewErrorCode =
                    (result.exception as? ReviewException)?.errorCode ?: ERROR_CODE_UNEXPECTED
                logger.warn("Failed to launch in-app review flow due to: $reviewErrorCode.")
            }

            Displayed, Unknown -> {}
        }

        recordReviewPromptEvent(
            promptAttemptResult = result,
            numberOfAppLaunches = numberOfAppLaunches(),
            now = Date(),
        )

        logger.info("tryPromptReview completed.")

        return result
        logger.info("tryPromptReview has been successfully noop'ed.")
        return ReviewPromptAttemptResult.NotDisplayed
    }

    /**
@@ -91,22 +53,8 @@ class PlayStoreReviewPromptController(
        activity: Activity,
        openInNewTab: (url: String) -> Unit,
    ) {
        logger.info("tryLaunchPlayStoreReview in progress...")

        try {
            logger.info("Navigating to Play store listing.")
            activity.startActivity(
                Intent(Intent.ACTION_VIEW, SupportUtils.RATE_APP_URL.toUri()),
            )
        } catch (e: ActivityNotFoundException) {
            // Device without the play store installed.
            // Opening the play store website.
            openInNewTab(SupportUtils.FENIX_PLAY_STORE_URL)

            logger.warn("Failed to launch play store review flow due to: $e.")
        }

        logger.info("tryLaunchPlayStoreReview completed.")
        logger.info("tryLaunchPlayStoreReview has been successfully noop'ed.")
        return
    }

    companion object {
+1 −9
Original line number Diff line number Diff line
@@ -95,15 +95,7 @@ class ReviewPromptMiddleware(
            return
        }

        val shouldShowPrompt: Boolean = createJexlHelper().use { jexlHelper ->
            val allMainCriteriaSatisfied = buildTriggerMainCriteria(jexlHelper).all { it }
            if (!allMainCriteriaSatisfied) {
                return@use false
            }

            val atLeastOneOfSubCriteriaSatisfied = buildTriggerSubCriteria(jexlHelper).any { it }
            return@use atLeastOneOfSubCriteriaSatisfied
        }
        val shouldShowPrompt: Boolean = false

        if (shouldShowPrompt) {
            if (shouldShowCustomPrompt()) {
+1 −6
Original line number Diff line number Diff line
@@ -21,11 +21,6 @@ import org.mozilla.fenix.reviewprompt.ReviewPromptState.NotEligible
 */
internal object ReviewPromptReducer {
    fun reduce(state: AppState, action: ReviewPromptAction): AppState {
        return when (action) {
            ShowPlayStorePrompt -> state.copy(reviewPrompt = Eligible(Type.PlayStore))
            ShowCustomReviewPrompt -> state.copy(reviewPrompt = Eligible(Type.Custom))
            DoNotShowReviewPrompt, ReviewPromptShown -> state.copy(reviewPrompt = NotEligible)
            CheckIfEligibleForReviewPrompt -> state
        }
        return state.copy(reviewPrompt = NotEligible)
    }
}
+0 −6
Original line number Diff line number Diff line
@@ -554,12 +554,6 @@ class SettingsFragment : PreferenceFragmentCompat(), SystemInsetsPaddedFragment
                SettingsFragmentDirections.actionSettingsFragmentToSyncDebugFragment()
            }

            // About preferences
            resources.getString(R.string.pref_key_rate) -> {
                components.playStoreReviewPromptController.tryLaunchPlayStoreReview(requireActivity(), ::openInNewTab)
                null
            }

            resources.getString(R.string.pref_key_about) -> {
                SettingsFragmentDirections.actionSettingsFragmentToAboutFragment()
            }
Loading