[PATCH] Citizen-claim-widget invite how-it-works: contract-sourced thresholds
Follow-up on draft PR #91 (Integrate InviteSDK rewards flow into citizen claim widget).
Summary
The "how it works" drawer for the invite rewards flow currently shows generic, fully hardcoded copy with no connection to the actual InvitesV2 contract requirements. Align the copy with GoodWallet's InviteView steps and source the two numeric thresholds (minimumDays, minimumClaims) from the contract via InviteSDK.getMinimums(), rather than hardcoding them.
Scope
Out of scope
- Surrounding step copy stays hardcoded/English-only for now, per requester direction.
- Native-app redirect handling (separate open research item, tracked with the requester directly — not part of this issue).
References
[PATCH] Citizen-claim-widget invite how-it-works: contract-sourced thresholds
Follow-up on draft PR #91 (Integrate InviteSDK rewards flow into citizen claim widget).
Summary
The "how it works" drawer for the invite rewards flow currently shows generic, fully hardcoded copy with no connection to the actual InvitesV2 contract requirements. Align the copy with GoodWallet's InviteView steps and source the two numeric thresholds (
minimumDays,minimumClaims) from the contract viaInviteSDK.getMinimums(), rather than hardcoding them.Scope
getMinimumsto the adapter'sInviteSnapshotSdk/InviteWriteSdkplumbing and includeminimumsinloadInviteSnapshot's returned snapshot /InviteState.HowItWorksDrawercopy inInviteRewards.tsxto mirror GoodWallet's 4-step explainer, interpolatingminimumClaims/minimumDaysfromstate.minimums.inviteAdapter.spec.ts's fake SDK and add a coverage assertion forsnapshot.minimums.Out of scope
References
src/sections/GoodDollar/components/Invite/InviteView.tsx,src/gooddollar/stores/inviteStore.ts