Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
5b878a9
- adds glance dependencies, configures glance components
Williamrai Mar 4, 2026
4b88f0c
- creates a pure function that resolves user data inputs to reading c…
Williamrai Mar 4, 2026
4d5c3ad
- adds preferences and state to observer for preferences
Williamrai Mar 4, 2026
4d901ec
- adds small and large layout
Williamrai Mar 4, 2026
9d5d6da
- layout fixes
Williamrai Mar 4, 2026
002d6e6
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 5, 2026
3ebb555
- adds reset logic
Williamrai Mar 5, 2026
f77ddb8
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 6, 2026
c5a5f73
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 6, 2026
c7821c4
- adds small widget components
Williamrai Mar 6, 2026
78cb32b
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 9, 2026
0c7e470
Reading challenge: code updates and renaming (#6372)
cooltey Mar 9, 2026
2c91e5f
- adds high resolution preview widget images
Williamrai Mar 9, 2026
351ac16
- adds developer playground for reading challenge widget
Williamrai Mar 10, 2026
f6a5dd2
- adds reading challenge developer settings
Williamrai Mar 10, 2026
ad75618
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 10, 2026
070d37a
- code fixes
Williamrai Mar 10, 2026
ec2d631
- code fixes
Williamrai Mar 10, 2026
169624b
- only emits state when widgets preferences has changed
Williamrai Mar 10, 2026
70fbfcd
- adds explicit updates for widgets
Williamrai Mar 10, 2026
6d6df0e
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 11, 2026
35030ab
- moves out re-usable components
Williamrai Mar 11, 2026
1c07a68
- adds a worker for scheduling widget update
Williamrai Mar 11, 2026
c249eee
- code fixes in ReadingChallengeWidgetWorker
Williamrai Mar 11, 2026
9c85e5f
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 11, 2026
a76ec00
- removes job once all widgets are removed
Williamrai Mar 11, 2026
20593fe
Merge remote-tracking branch 'origin/reading-challenge-widget-design'…
Williamrai Mar 11, 2026
b941c72
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 11, 2026
9e861ef
- widget size fixes
Williamrai Mar 12, 2026
d7b7346
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 12, 2026
4e22cc0
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 12, 2026
9ff3ce4
- refactors code to use one widget and allow it to resize to small or…
Williamrai Mar 13, 2026
36ef628
Merge remote-tracking branch 'origin/reading-challenge-widget-design'…
Williamrai Mar 13, 2026
9df5afb
- use exact mode for resizing
Williamrai Mar 13, 2026
194d40f
- fix resizing width logic
Williamrai Mar 13, 2026
853c32c
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 13, 2026
186265c
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 13, 2026
a13d6f3
- restructure the widget files
Williamrai Mar 13, 2026
38fa7e1
- adds font utils and general widget
Williamrai Mar 13, 2026
c63de4e
- ui fixes
Williamrai Mar 13, 2026
138221a
- updates WidgetColors
Williamrai Mar 16, 2026
ebb1614
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 16, 2026
9a64d57
- adds pre-beta release input to resolve state to bypass for dev builds
Williamrai Mar 16, 2026
5a0e7d1
- adds isChallengeActive helper function
Williamrai Mar 16, 2026
e7d3637
- updates GeneralLargeWidget structure (#6401)
Williamrai Mar 17, 2026
6c26d3f
Reading Challenge: Join the challenge: Logged-in (#6374)
cooltey Mar 17, 2026
7fe30ca
Simplify versions.
dbrant Mar 17, 2026
0eb59b4
Merge remote-tracking branch 'origin/main' into reading-challenge-wid…
Williamrai Mar 17, 2026
0deeb03
Reading Challenge EnrolledNotStarted / Streak lost and can restart (#…
Williamrai Mar 17, 2026
45c9a6a
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 17, 2026
705ee78
Daily reading challenge (#6379)
Williamrai Mar 17, 2026
3b69157
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 17, 2026
a092da6
- adds dynamic height to GeneralLargeWidget
Williamrai Mar 18, 2026
799f935
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 18, 2026
2a68822
ReadingChallenge: update onboarding prompt and click actions (#6407)
cooltey Mar 18, 2026
a202791
Some light cleanup.
dbrant Mar 18, 2026
690a9d5
Center text in onboarding buttons.
dbrant Mar 18, 2026
5756a88
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 18, 2026
15bcab1
ReadingChallenge: replace W logo with a PNG to show the shadow (#6412)
cooltey Mar 18, 2026
bc6531f
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 18, 2026
e589a13
Widget Boxed progress bar update (#6411)
Williamrai Mar 18, 2026
1177de6
Widgets - Refresh copy/illustrations/text (#6396)
Williamrai Mar 18, 2026
3d303e3
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 18, 2026
c878966
Merge branch 'main' into reading-challenge-widget-design
dbrant Mar 19, 2026
0f024d2
Some structural updates.
dbrant Mar 19, 2026
c916f61
Fill out remaining states.
dbrant Mar 19, 2026
5034293
Reading Challenge Onboarding Bug fix (#6414)
Williamrai Mar 19, 2026
6ceac95
Add reward dialog.
dbrant Mar 19, 2026
95f173c
Merge branch 'reading-challenge-widget-design' of github.com:wikimedi…
dbrant Mar 19, 2026
fd39193
Knock out reward dialog.
dbrant Mar 19, 2026
ac34f7c
ReadingChallenge: update onboarding process and UI (#6420)
cooltey Mar 19, 2026
f30d1f5
Merge branch 'reading-challenge-widget-design' of github.com:wikimedi…
dbrant Mar 19, 2026
c41a30c
Adapt.
dbrant Mar 19, 2026
f48822b
Nail it down.
dbrant Mar 19, 2026
71df3d3
Fix action.
dbrant Mar 19, 2026
740674f
- updates large widget compact size threshold (#6421)
Williamrai Mar 19, 2026
558fb35
Clean up.
dbrant Mar 19, 2026
ff755ee
Widget onboarding: no need for Scaffold. (#6422)
dbrant Mar 19, 2026
f7b5522
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 20, 2026
01d430c
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 20, 2026
41c1232
ReadingChallenge: update button style and paddings for installWidgetD…
cooltey Mar 20, 2026
a42131e
- adds more test coverage for reading challenge widgets (includes str…
Williamrai Mar 20, 2026
595aafa
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 20, 2026
a357b2b
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 20, 2026
d7afe1d
Reading challenge: make dev playground into a dialog, not activity. (…
dbrant Mar 23, 2026
4ef4c6c
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 23, 2026
b28a117
Merge branch 'main' into reading-challenge-widget-design
dbrant Mar 23, 2026
f7f20f4
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 23, 2026
db5c739
Use bottomsheet convenience.
dbrant Mar 23, 2026
1ed26bf
Merge branch 'reading-challenge-widget-design' of github.com:wikimedi…
dbrant Mar 23, 2026
8c8d2e1
- fixes developer playground for widgets (#6435)
Williamrai Mar 23, 2026
dde2072
Follow up: reading challenge playground layout update (#6436)
cooltey Mar 24, 2026
b4aa1b1
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 24, 2026
94b0b33
Merge branch 'main' into reading-challenge-widget-design
cooltey Mar 24, 2026
0adc901
ReadingChallenge: design tweaks for login/logout behaviors (#6442)
cooltey Mar 25, 2026
8602387
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 26, 2026
f781a43
Merge branch 'main' into reading-challenge-widget-design
Williamrai Mar 26, 2026
778df81
Reading challenge UI fixes (#6443)
Williamrai Mar 27, 2026
e030dff
Rc widget combination fast cycle developer setting update (#6439)
Williamrai Mar 27, 2026
3d38900
Plug in reward URL.
dbrant Mar 30, 2026
68da806
- adds proguard rule to keep ActionCallback for reading challenge wid…
Williamrai Mar 31, 2026
5eaf246
- adds loading state for widgets (#6475)
Williamrai Apr 2, 2026
240370d
Merge remote-tracking branch 'origin/main' into reading-challenge-wid…
Williamrai Apr 3, 2026
b9914c6
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 7, 2026
f6e55f6
Design tweaks and fixes.
dbrant Apr 7, 2026
26153d7
Display with a post.
dbrant Apr 7, 2026
70b09a1
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 8, 2026
3bf44d2
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 8, 2026
3e34c60
Merge remote-tracking branch 'origin/reading-challenge-widget-design'…
Williamrai Apr 8, 2026
e7d6c1d
- adds assets
Williamrai Apr 9, 2026
5d4d03c
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 9, 2026
910e02a
Merge remote-tracking branch 'origin/reading-challenge-widget-design'…
Williamrai Apr 13, 2026
4d290dd
- update dates
Williamrai Apr 13, 2026
6066e22
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 13, 2026
6a4d885
- updates ReadingChallengeWidgetRepositoryTest
Williamrai Apr 13, 2026
ab64857
- font size and mascot size fixes for small widget content
Williamrai Apr 14, 2026
c1edf76
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 14, 2026
972bf66
Merge branch 'main' into reading-challenge-widget-design
cooltey Apr 14, 2026
da95a79
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 15, 2026
80b360d
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 16, 2026
60047a8
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 20, 2026
6be826a
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 21, 2026
638cffa
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 21, 2026
f3d8680
[Reading Challenge Widget] Adds start date in dev settings for readin…
Williamrai Apr 24, 2026
5869ae0
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 24, 2026
e8f1fb0
- adds correct default start date for readingChallengeStartDate pref
Williamrai Apr 24, 2026
7356803
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 24, 2026
c7c57d0
Merge remote-tracking branch 'origin/reading-challenge-widget-design'…
Williamrai Apr 24, 2026
f311214
[Reading Challenge Widget] Overlapping Widget UI fixes and use parame…
Williamrai Apr 24, 2026
11e1a0a
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 27, 2026
786349a
[Instrumentation] Reading Challenge Widget (#6516)
Williamrai Apr 27, 2026
dc83e7c
- Refine widget sizing system and fix layout issues (#6533)
Williamrai Apr 27, 2026
1dc5f8d
- adds missing end padding
Williamrai Apr 27, 2026
1a29c8f
Merge branch 'main' into reading-challenge-widget-design
Williamrai Apr 27, 2026
de9a11f
[Reading Challenge] Fix: Reward dialog not opening (#6534)
Williamrai Apr 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,12 @@ dependencies {
ksp libs.androidx.room.compiler
implementation libs.androidx.room.ktx

implementation libs.androidx.ui.graphics
implementation libs.androidx.glance.appwidget
implementation libs.androidx.glance.material3
implementation libs.androidx.glance.preview
implementation libs.androidx.glance.appwidget.preview

// For language detection during editing
prodImplementation libs.com.google.mlkit.language.id
betaImplementation libs.com.google.mlkit.language.id
Expand Down Expand Up @@ -260,7 +266,6 @@ dependencies {
androidTestImplementation libs.room.testing
androidTestUtil libs.androidx.orchestrator

// Coil
implementation(libs.coil.compose)
implementation(libs.coil.network.okhttp)
implementation(libs.coil.gif)
Expand Down
4 changes: 4 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@

-dontwarn com.google.re2j.Matcher
-dontwarn com.google.re2j.Pattern

# TODO: remove after reading challenge widget is removed
-keep class * implements androidx.glance.appwidget.action.ActionCallback { public <init>(); }

15 changes: 15 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,9 @@
android:name=".donate.donationreminder.DonationReminderActivity"
android:windowSoftInputMode="adjustResize"/>

<activity
android:name=".widgets.readingchallenge.ReadingChallengeOnboardingActivity" />

<provider
android:name=".WikipediaFileProvider"
android:authorities="${applicationId}.fileprovider"
Expand Down Expand Up @@ -456,6 +459,18 @@
android:resource="@xml/widget_featured_page" />
</receiver>

<receiver
android:label="@string/reading_challenge_widget_name"
android:name=".widgets.readingchallenge.ReadingChallengeWidgetReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/reading_challenge_widget_info"/>
</receiver>

<receiver android:name=".notifications.NotificationPollBroadcastReceiver"
android:exported="true">
<intent-filter>
Expand Down
25 changes: 23 additions & 2 deletions app/src/main/java/org/wikipedia/activity/BaseActivity.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.wikipedia.activity

import android.content.Intent
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.MenuItem
import android.view.MotionEvent
Expand All @@ -10,6 +9,7 @@ import androidx.annotation.ColorInt
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.pm.ShortcutManagerCompat
import androidx.core.graphics.drawable.toDrawable
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
Expand Down Expand Up @@ -40,6 +40,7 @@ import org.wikipedia.games.onthisday.OnThisDayGameResultFragment
import org.wikipedia.login.LoginActivity
import org.wikipedia.main.MainActivity
import org.wikipedia.notifications.NotificationPresenter
import org.wikipedia.onboarding.InitialOnboardingActivity
import org.wikipedia.page.ExclusiveBottomSheetPresenter
import org.wikipedia.readinglist.ReadingListSyncBehaviorDialogs
import org.wikipedia.readinglist.sync.ReadingListSyncAdapter
Expand All @@ -52,6 +53,9 @@ import org.wikipedia.util.DeviceUtil
import org.wikipedia.util.FeedbackUtil
import org.wikipedia.util.ResourceUtil
import org.wikipedia.views.ImageZoomHelper
import org.wikipedia.widgets.readingchallenge.ReadingChallengeInstallWidgetDialog
import org.wikipedia.widgets.readingchallenge.ReadingChallengeOnboardingActivity
import org.wikipedia.widgets.readingchallenge.ReadingChallengeWidgetRepository
import org.wikipedia.yearinreview.YearInReviewActivity
import org.wikipedia.yearinreview.YearInReviewOnboardingActivity
import org.wikipedia.yearinreview.YearInReviewViewModel
Expand All @@ -78,6 +82,15 @@ abstract class BaseActivity : AppCompatActivity(), ConnectionStateMonitor.Callba
}
}

private val requestReadingChallengeActivity = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (ReadingChallengeWidgetRepository.shouldShowWidgetInstallDialog()) {
ExclusiveBottomSheetPresenter.dismiss(supportFragmentManager)
ExclusiveBottomSheetPresenter.show(supportFragmentManager,
ReadingChallengeInstallWidgetDialog()
)
}
}

private val notificationPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
// TODO: Show message(s) to the user if they deny the permission
}
Expand Down Expand Up @@ -123,6 +136,7 @@ abstract class BaseActivity : AppCompatActivity(), ConnectionStateMonitor.Callba
setNavigationBarColor(ResourceUtil.getThemedColor(this, R.attr.paper_color))
maybeShowLoggedOutInBackgroundDialog()
maybeShowYearInReview()
maybeShowReadingChallengePrompt()

Prefs.localClassName = localClassName

Expand Down Expand Up @@ -267,8 +281,15 @@ abstract class BaseActivity : AppCompatActivity(), ConnectionStateMonitor.Callba
}
}

protected fun maybeShowReadingChallengePrompt() {
if (ReadingChallengeWidgetRepository.shouldShowOnboardingDialog() &&
this !is ReadingChallengeOnboardingActivity && this !is InitialOnboardingActivity) {
requestReadingChallengeActivity.launch(ReadingChallengeOnboardingActivity.newIntent(this))
}
}

private fun removeSplashBackground() {
window.setBackgroundDrawable(ColorDrawable(ResourceUtil.getThemedColor(this, R.attr.paper_color)))
window.setBackgroundDrawable(ResourceUtil.getThemedColor(this, R.attr.paper_color).toDrawable())
}

private fun maybeShowLoggedOutInBackgroundDialog() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ import org.wikipedia.history.HistoryEntry
import org.wikipedia.history.HistoryFragment
import org.wikipedia.login.LoginActivity
import org.wikipedia.navtab.NavTab
import org.wikipedia.page.ExclusiveBottomSheetPresenter
import org.wikipedia.page.PageActivity
import org.wikipedia.page.PageTitle
import org.wikipedia.settings.Prefs
Expand All @@ -123,6 +124,8 @@ import org.wikipedia.usercontrib.UserContribListActivity
import org.wikipedia.util.FeedbackUtil
import org.wikipedia.util.UiState
import org.wikipedia.util.UriUtil
import org.wikipedia.widgets.readingchallenge.ReadingChallengeRewardDialog
import org.wikipedia.widgets.readingchallenge.ReadingChallengeWidgetRepository
import java.time.LocalDateTime

class ActivityTabFragment : Fragment() {
Expand Down Expand Up @@ -211,10 +214,19 @@ class ActivityTabFragment : Fragment() {
Prefs.isGameStatsUnavailableSnackbarShown = true
}
}
maybeShowReadingChallengeRewardDialog()
viewModel.loadAll()
requireActivity().invalidateOptionsMenu()
}

private fun maybeShowReadingChallengeRewardDialog() {
val intent = requireActivity().intent
if (ReadingChallengeWidgetRepository.shouldShowReward(intent)) {
intent.removeExtra(ReadingChallengeWidgetRepository.INTENT_EXTRA_READING_CHALLENGE_REWARD)
ExclusiveBottomSheetPresenter.show(childFragmentManager, ReadingChallengeRewardDialog())
}
}

override fun onPause() {
super.onPause()
requireActivity().removeMenuProvider(menuProvider)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ fun OnboardingScreen(
containerColor = WikipediaTheme.colors.paperColor,
bottomBar = {
TwoButtonBottomBar(
modifier = Modifier.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 16.dp),
primaryButtonText = stringResource(R.string.onboarding_continue),
secondaryButtonText = stringResource(R.string.activity_tab_menu_info),
onPrimaryOnClick = onContinueClick,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import org.wikipedia.R
Expand Down Expand Up @@ -56,7 +57,7 @@ fun OnboardingListItem(
color = WikipediaTheme.colors.primaryColor
)
Text(
text = stringResource(item.subTitle),
text = item.subtitleString ?: stringResource(item.subTitle),
style = MaterialTheme.typography.bodyMedium,
color = WikipediaTheme.colors.secondaryColor
)
Expand All @@ -66,15 +67,14 @@ fun OnboardingListItem(

@Composable
fun TwoButtonBottomBar(
modifier: Modifier = Modifier,
primaryButtonText: String,
secondaryButtonText: String,
onPrimaryOnClick: () -> Unit,
onSecondaryOnClick: () -> Unit
) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 16.dp),
modifier = modifier,
horizontalArrangement = Arrangement.spacedBy(
space = 24.dp,
alignment = Alignment.CenterHorizontally
Expand All @@ -96,7 +96,8 @@ fun TwoButtonBottomBar(
Text(
text = secondaryButtonText,
style = MaterialTheme.typography.labelLarge,
color = WikipediaTheme.colors.progressiveColor
color = WikipediaTheme.colors.progressiveColor,
textAlign = TextAlign.Center
)
}

Expand All @@ -114,7 +115,8 @@ fun TwoButtonBottomBar(
Text(
text = targetText,
style = MaterialTheme.typography.labelLarge,
color = WikipediaTheme.colors.paperColor
color = WikipediaTheme.colors.paperColor,
textAlign = TextAlign.Center
)
}
}
Expand All @@ -124,7 +126,8 @@ fun TwoButtonBottomBar(
data class OnboardingItem(
val icon: Int,
val title: Int,
val subTitle: Int
val subTitle: Int = 0,
val subtitleString: String? = null
)

@Preview
Expand All @@ -142,3 +145,20 @@ private fun OnboardingListItemPreview() {
)
}
}

@Preview
@Composable
private fun TwoButtonBottomBarPreview() {
BaseTheme(
currentTheme = Theme.DARK
) {
TwoButtonBottomBar(
modifier = Modifier.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 16.dp),
"Foo",
"A rather long button label",
onPrimaryOnClick = { },
onSecondaryOnClick = { }
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,21 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import org.wikipedia.compose.theme.WikipediaTheme

@Composable
fun WikipediaAlertDialog(
modifier: Modifier = Modifier,
title: String,
message: String,
confirmButtonText: String,
confirmButtonColor: Color = WikipediaTheme.colors.progressiveColor,
dismissButtonText: String,
dismissButtonColor: Color = WikipediaTheme.colors.progressiveColor,
onDismissRequest: () -> Unit,
onConfirmButtonClick: () -> Unit,
onDismissButtonClick: () -> Unit,
modifier: Modifier = Modifier
onDismissButtonClick: () -> Unit
) {
AlertDialog(
modifier = modifier,
Expand All @@ -37,19 +40,15 @@ fun WikipediaAlertDialog(
onDismissRequest = onDismissRequest,
confirmButton = {
TextButton(
colors = ButtonDefaults.textButtonColors(
contentColor = WikipediaTheme.colors.progressiveColor
),
colors = ButtonDefaults.textButtonColors(contentColor = confirmButtonColor),
onClick = onConfirmButtonClick
) {
Text(confirmButtonText)
}
},
dismissButton = {
TextButton(
colors = ButtonDefaults.textButtonColors(
contentColor = WikipediaTheme.colors.progressiveColor
),
colors = ButtonDefaults.textButtonColors(contentColor = dismissButtonColor),
onClick = onDismissButtonClick
) {
Text(dismissButtonText)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class CreateAccountActivity : BaseActivity() {

// Only send event if the activity is created for the first time
if (savedInstanceState == null) {
instrument?.submitInteraction("impression", actionContext = mapOf("create_source" to requestSource))
instrument?.submitInteraction("impression", actionContext = mapOf("invoke_source" to requestSource))
}

addFirstKeystrokeInstrumentation(binding.createAccountUsername.editText, "username")
Expand Down Expand Up @@ -396,7 +396,7 @@ class CreateAccountActivity : BaseActivity() {
setResult(RESULT_ACCOUNT_CREATED, resultIntent)
showProgressBar(false)
captchaHandler.cancelCaptcha()
instrument?.submitInteraction("success", actionContext = mapOf("create_source" to requestSource))
instrument?.submitInteraction("success", actionContext = mapOf("invoke_source" to requestSource))
DeviceUtil.hideSoftKeyboard(this@CreateAccountActivity)
finish()
}
Expand Down
18 changes: 16 additions & 2 deletions app/src/main/java/org/wikipedia/login/LoginActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import androidx.core.view.isVisible
import androidx.core.widget.addTextChangedListener
import androidx.lifecycle.lifecycleScope
import com.google.android.material.textfield.TextInputLayout
import kotlinx.coroutines.launch
import org.wikipedia.R
import org.wikipedia.WikipediaApp
import org.wikipedia.activity.BaseActivity
Expand All @@ -40,6 +41,8 @@ import org.wikipedia.util.StringUtil
import org.wikipedia.util.UriUtil.visitInExternalBrowser
import org.wikipedia.util.log.L
import org.wikipedia.views.NonEmptyValidator
import org.wikipedia.widgets.readingchallenge.ReadingChallengeWidgetRepository
import java.time.LocalDate

class LoginActivity : BaseActivity() {
private lateinit var binding: ActivityLoginBinding
Expand Down Expand Up @@ -223,8 +226,18 @@ class LoginActivity : BaseActivity() {
}

private fun onLoginSuccess() {
instrument?.submitInteraction("success")

val isReadingChallenge = loginSource == SOURCE_READING_CHALLENGE
instrument?.submitInteraction(action = "success", actionContext = if (isReadingChallenge) mapOf("invoke_source" to loginSource) else null)
if (isReadingChallenge) {
Prefs.readingChallengeEnrolled = true
Prefs.readingChallengeEnrollmentDate = LocalDate.now().toString()
lifecycleScope.launch {
if (ReadingChallengeWidgetRepository.isWidgetInstalled()) {
ReadingChallengeWidgetRepository(this@LoginActivity).updateWidgetsAndSendAnalytics()
}
}
intent.removeExtra(LOGIN_REQUEST_SOURCE)
}
DeviceUtil.hideSoftKeyboard(this@LoginActivity)
setResult(RESULT_LOGIN_SUCCESS)

Expand Down Expand Up @@ -347,6 +360,7 @@ class LoginActivity : BaseActivity() {
const val SOURCE_ACTIVITY_TAB = "activity_tab"
const val SOURCE_YEAR_IN_REVIEW = "yir"
const val SOURCE_ON_THIS_DAY_GAME_RESULT = "on_this_day_game_result"
const val SOURCE_READING_CHALLENGE = "widget_challenge"

fun newIntent(context: Context, source: String, createAccountFirst: Boolean = true): Intent {
return Intent(context, LoginActivity::class.java)
Expand Down
Loading
Loading