Page MenuHomePhabricator

[User story] Completing / Concluding the challenge / Streak lost and cannot restart
Closed, ResolvedPublic3 Estimated Story Points

Description

User story
  • As a participant who completes 25 days, I want to receive my 15% store discount code, so that the reward feels immediate and satisfying.
  • As a participant who did not complete 25 days, I want my best effort recognized and communicated so that I understand what my progress was.
  • As a participant whose streak has ended with insufficient days remaining to complete a restart, I want the restart option hidden, so that I'm not misled into an impossible attempt.
Requirements:

Challenge complete:

  • ✅ When a streak of 25 consecutive days is recorded, the module immediately transitions to State: Challenge complete successfully
  • Completion can occur after May 31st: a user who joins May 31st has until June 25th to complete their streak (or June 26th if a streak freeze is applied - see Nice to Have)
  • ✅ Displays a "Collect your prize" CTA on the Widget
  • ✅ Tapping "Collect your prize" opens an in-app prize screen
  • State persists until July 10th, after which the Widget is removed for all users
  • ✅ Completion is a terminal state: the system stops listening for article opens once 25 days are reached
  • ✅ Tapping anywhere on the widget (other than the CTA) opens Explore

Challenge concluded: incomplete

  • ✅ For users who do not reach 25 days with a streak that started between 1-31 May, but did read for more than 1 day in a row, they should see State: Challenge concluded: incomplete / Streak lost and cannot restart
  • ✅ Show user's highest streak achieved up until that point
  • Persist until July 10th, after which the module is removed for all users
  • ✅ Tapping anywhere on the widget opens Explore

Challenge concluded: Streak lost and cannot restart

  • ✅ Disallow re-starting the challenge if after May 31
    • After May 31st, the system stops listening for new streaks for all enrolled users who have not reached 25 days
    • ✅ If a user loses their streak after May 31, they should see State: Challenge concluded: incomplete / Streak lost and cannot restart
  • ✅Tapping anywhere on the widget opens Explore

Challenge concluded: No streak

  • ✅ For users who never joined, or joined and never read more than 1 day in a row starting with a start date of 1-31 May, they should see State: Challenge concluded: No streak
  • Persists until July 10th, after which the module is removed for all users
  • ✅ Tapping anywhere on the widget opens Explore

Prize screen

  • ✅ Prize screen can be triggered any time from the Challenge completed state of the widget
  • ✅ Display prize information on top of Activity Tab
  • ✅ Offer link to Wikipedia Store: https://store.wikimedia.org/discount/Widget15
    • Store link should open in their browser
  • ✅ User must be logged-in to view prize information
    • [Nice to have] If a user is logged-out and tries to collect prize, show toast on activity tab "Please log in to collect your prize"
Designs

Event Timeline

HNordeenWMF triaged this task as Medium priority.

@HNordeenWMF - State persists until July 10th, after which the Widget is removed for all users

If they don't update to a new version, I don't believe we'll be able to forcibly remove the widget, just like we can't add widgets I don't think we can take it away. Could we scale it to be a dark "disabled" version ("Challenge complete, delete me please")

@GOlson-WMF I'll update the requirement to - State persists until July 10th, after which the Widget is removed from future releases
It's fine if users who don't update keep the widget with "Challenge concluded", they will delete it by themselves at some point. I don't want to add a new task

@HNordeenWMF "have the option to add a Baby Globe icon applied to my profile, so that the reward feels immediate and satisfying." - is the baby globe icon a real requirement? Also would you like an in app web view or kicked out to Safari?

GOlson-WMF set the point value for this task to 3.Mar 5 2026, 6:50 PM

@GOlson-WMF it became a nice-to-have on the Epic https://phabricator.wikimedia.org/T418949, so we will have a separate task for adding the Baby Globe prize information + functionality. Updated the user story!

Safari for the link to the store, since it'll be easier to have auto-filled payment options

342 should be available now while we fix this!

Handing this one back to @GOlson-WMF. What's left is the "collect your prize" half sheet modal bits (under the red line).

Hi @GOlson-WMF, I would like to clarify how the logic is currently working on iOS (William and I had a discussion on this task https://phabricator.wikimedia.org/T41864 and realized we interpreted things differently).

On the challenge end date June 19, this is the intended behavior:

  • If users don't have an active streak, the challenge concludes automatically, and displays (if any) the longest streak they achieved.
  • Users with an active streak of less than 25 days can continue with the streak & earn their prize past the end date, up until the widget removal date.
    • If at any point that streak breaks past the end date, they transition to "Challenge concluded: incomplete / Streak lost and cannot restart" and cannot start a new streak.

I haven't been able to test yet on iOS, but wanted to confirm: Is this how it's set up currently on iOS?

@GOlson-WMF confirmed in slack that yes, that's how it's working! I confirmed with testing too

Fixes will be in main (not Experimental) TestFlight 8.1.0 (6045).

everything looks great (deleted my prior feedback, was accidentally looking at the old branch)

ABorbaWMF subscribed.

Working for me on 8.1.0 (6045)
Tested on:
iPhone 16, iOS 26.4.2
iPhone SE, iOS 26.4.2
iPad Air 11 inch, iPadOS 26.3.1