Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import org.wikipedia.suggestededits.provider.EditingSuggestionsProvider
import org.wikipedia.util.FeedbackUtil
import org.wikipedia.util.ReleaseUtil
import org.wikipedia.util.StringUtil.fromHtml
import org.wikipedia.yearinreview.data.YearInReviewEndScreenABTest
import org.wikipedia.yearinreview.data.YearInReviewSurveyState
import java.util.Date
import java.util.concurrent.TimeUnit
Expand Down Expand Up @@ -339,7 +340,8 @@ internal class DeveloperSettingsPreferenceLoader(fragment: PreferenceFragmentCom
listOf(
DonationReminderAbTest(),
NewWithinInterestABTest(),
ReadAloudLeadSectionABTest()
ReadAloudLeadSectionABTest(),
YearInReviewEndScreenABTest()
).forEach { abTest ->
category.addPreference(IntPreference(screen.context).apply {
key = abTest.preferenceKey
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ object YearInReviewPlaygroundPreview {
),
YearInReviewPage.ThankYou(isEditor = true, isDonor = true),
YearInReviewPage.YouMatter(showLoginPrompt = false),
YearInReviewPage.End
YearInReviewPage.End(isDonor = true)
)

// Visits has no empty state: it's left out of the flow instead
Expand All @@ -140,7 +140,7 @@ object YearInReviewPlaygroundPreview {
YearInReviewPage.Geography(isEmptyState = true, placeArticleCounts = emptyMap()),
YearInReviewPage.SavedArticles(isEmptyState = true, savedCount = 0, articles = emptyList()),
YearInReviewPage.TotalEdits(isEmptyState = true, editCount = 0),
YearInReviewPage.End
YearInReviewPage.End(isDonor = false)
)

// Between 1 and all of the items, so slides with a variable number of rows can be checked
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.wikipedia.yearinreview.data

import org.wikipedia.analytics.ABTest

class YearInReviewEndScreenABTest : ABTest("year-in-review-end-screen", GROUP_SIZE_2) {
override fun getGroupName(): String {
return when (group) {
GROUP_2 -> "treatment"
else -> "control"
}
}

fun isTestGroupUser(): Boolean {
return group == GROUP_2
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,21 @@ import androidx.core.view.WindowCompat
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.lifecycleScope
import org.wikipedia.R
import org.wikipedia.WikipediaApp
import org.wikipedia.activity.BaseActivity
import org.wikipedia.analytics.eventplatform.BreadCrumbLogEvent
import org.wikipedia.analytics.eventplatform.EventPlatformClient
import org.wikipedia.analytics.eventplatform.YearInReviewEvent
import org.wikipedia.analytics.testkitchen.TestKitchenAdapter
import org.wikipedia.compose.theme.BaseTheme
import org.wikipedia.donate.DonateDialog
import org.wikipedia.feed.personalization.PersonalizationActivity
import org.wikipedia.games.GamesHubActivity
import org.wikipedia.page.ExclusiveBottomSheetPresenter
import org.wikipedia.util.FeedbackUtil
import org.wikipedia.util.ShareUtil
import org.wikipedia.util.UriUtil
import org.wikipedia.yearinreview.data.YearInReviewEndScreenABTest

class YearInReviewActivity : BaseActivity() {

Expand All @@ -32,6 +37,10 @@ class YearInReviewActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

_instrument = TestKitchenAdapter.client.getInstrument("apps-year-in-review")
.startFunnel("year-in-review")
.setExperiment(TestKitchenAdapter.getExperiment(YearInReviewEndScreenABTest()))

initializeYearInReviewRive(this)

enableEdgeToEdge(
Expand Down Expand Up @@ -92,10 +101,27 @@ class YearInReviewActivity : BaseActivity() {
)
ExclusiveBottomSheetPresenter.show(supportFragmentManager, DonateDialog.newInstance(campaignId = campaignId, fromYiR = true))
},
onEndCardClick = { card ->
when (card) {
YearInReviewEndCard.GAMES -> startActivity(GamesHubActivity.newIntent(this))
YearInReviewEndCard.CUSTOMIZE_HOME -> startActivity(PersonalizationActivity.newIntent(this, showInterestsOnly = true))
YearInReviewEndCard.STORE_DISCOUNT -> {
UriUtil.visitInExternalBrowser(context = this, uri = getString(R.string.year_in_review_store_discount_url).toUri())
}
YearInReviewEndCard.QUIZ -> {
UriUtil.visitInExternalBrowser(context = this, uri = getString(R.string.year_in_review_quiz_url, WikipediaApp.instance.appOrSystemLanguageCode).toUri())
Comment thread
dbrant marked this conversation as resolved.
}
}
},
onStatusBarIconColorChange = { useDarkIcons ->
WindowCompat.getInsetsController(window, window.decorView)
.isAppearanceLightStatusBars = useDarkIcons
},
onPageImpression = { page ->
if (page is YearInReviewPage.End) {
YearInReviewEndScreenABTest().maybeSendExposureEvent()
}
},
onRetryClick = {
viewModel.loadYearInReview()
},
Expand Down
Loading
Loading