diff --git a/data/src/main/java/com/moez/QKSMS/mapper/RatingManagerImpl.kt b/data/src/main/java/com/moez/QKSMS/mapper/RatingManagerImpl.kt index 161b0ed5..d35e0fe0 100644 --- a/data/src/main/java/com/moez/QKSMS/mapper/RatingManagerImpl.kt +++ b/data/src/main/java/com/moez/QKSMS/mapper/RatingManagerImpl.kt @@ -18,7 +18,10 @@ */ package com.moez.QKSMS.mapper +import android.content.Context import com.f2prateek.rx.preferences2.RxSharedPreferences +import com.moez.QKSMS.experiment.Experiment +import com.moez.QKSMS.experiment.Variant import com.moez.QKSMS.manager.AnalyticsManager import com.moez.QKSMS.manager.RatingManager import io.reactivex.rxkotlin.Observables @@ -26,13 +29,10 @@ import javax.inject.Inject class RatingManagerImpl @Inject constructor( rxPrefs: RxSharedPreferences, - private val analyticsManager: AnalyticsManager + private val analyticsManager: AnalyticsManager, + private val ratingThresholdExperiment: RatingThresholdExperiment ) : RatingManager { - companion object { - private const val SESSION_THRESHOLD = 100 - } - private val sessions = rxPrefs.getInteger("sessions", 0) private val rated = rxPrefs.getBoolean("rated", false) private val dismissed = rxPrefs.getBoolean("dismissed", false) @@ -42,7 +42,7 @@ class RatingManagerImpl @Inject constructor( rated.asObservable(), dismissed.asObservable()) { sessions, rated, dismissed -> - sessions > SESSION_THRESHOLD && !rated && !dismissed + sessions > ratingThresholdExperiment.variant && !rated && !dismissed } override fun addSession() { @@ -59,4 +59,21 @@ class RatingManagerImpl @Inject constructor( dismissed.set(true) } +} + +class RatingThresholdExperiment @Inject constructor( + context: Context, + analytics: AnalyticsManager +) : Experiment(context, analytics) { + + override val key: String = "Rating Threshold" + + override val variants: List> = listOf( + Variant("variant_a", 100), + Variant("variant_b", 10)) + + override val default: Int = 100 + + override val qualifies: Boolean = true + } \ No newline at end of file