The problem I needed to solve
A weekly streak depends on more than attendance: claiming the previous day’s reward matters too. I kept that behavior separate from the independent daily reward.
Implementation in this snapshot
WeeklyStreakRewardService.RefreshLoginState checks day distance and the previous claim date. Only a next-day visit following a claim advances the streak; otherwise it returns to day one.
The design decision and its cost
Day seven can activate another set. MetaCatalog determines whether a set loops or is single-use, and completed set IDs are saved.
Current boundaries
The policy depends on local dates and local saves. Clock reversal or cleared data can alter its interpretation; this code does not establish server-side tamper protection.
Review scenarios and contract meaning
Imagine a player who visits today but does not claim the reward. Attendance alone does not guarantee advancing tomorrow. In the current logic, a next-day visit must follow a recorded claim on the preceding day. Help text and each box’s state should make that difference visible; otherwise the player may understand daily attendance as sufficient. Day one, the day after a claim, the day after an unclaimed visit and a multi-day gap are four distinct checks of this contract.
Completing day seven is more than a celebration effect: selecting the next set depends on catalog data and completed-set state. A looping set and a single-use set create different expectations. Their saved identifiers matter, and casual renaming can change what history means. As with the daily reward, distribution success may describe a deferred presentation request rather than an increased balance, so reward durability remains a separate concern. I describe this as a local motivation path and do not infer a trusted server calendar or resistance to clock changes.
Seven boxes should represent this reward path rather than weekdays. Day three of a streak is not necessarily Wednesday, and a fresh path can begin on any weekday. Interface copy needs that distinction. The streak’s advancement policy defines its meaning; changing it later calls for deliberate review of existing saves and product text.
What this stage taught me
For me, daily rewards and streaks should differ in actual behavior. The screen should explain today’s position in the path rather than merely displaying seven attractive boxes.




