-
Notifications
You must be signed in to change notification settings - Fork 18
feat(notifications): add retries, rate limiting, receipts & token hygiene #2510
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: implement-expo-push-send-integ
Are you sure you want to change the base?
feat(notifications): add retries, rate limiting, receipts & token hygiene #2510
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
bb60747 to
ba1bca2
Compare
1d76b31 to
3f76a68
Compare
ba1bca2 to
069cc21
Compare
…iene - Add concurrency limiting (max 6 chunks in parallel) to Expo push sending - Implement retry with exponential backoff for rate-limited messages (MessageRateExceeded) - Collect ticket IDs from successful sends for receipt checking - Track tokens to deactivate when DeviceNotRegistered errors occur - Add checkExpoPushReceipts function for delayed receipt verification - Create receiptCheckWorkflow Temporal workflow for delayed receipt checking (~15 min delay) - Add checkPushReceiptsActivity and deactivateTokensActivity - Integrate automatic token deactivation in sendPushNotificationActivity - Mask tokens in logs to avoid exposing sensitive values - Update tests for new response fields (ticketIds, tokensToDeactivate) Co-Authored-By: Warp <agent@warp.dev>
- Add MAX_NOTE_LENGTH (256), MAX_BODY_LENGTH (500), MAX_TITLE_LENGTH (100) constants - Add truncate() helper and sanitizeDataPayload() for push notification safety - Truncate note field in notification body to prevent MessageTooBig errors - Separate in-app notification data (full note preserved) from push data (truncated) - Pass workflowId to notification activities for idempotency tracking - Add workflowId to TransferNotificationParams type Co-Authored-By: Warp <agent@warp.dev>
… Warp <agent@warp.dev>
- De-dupe Expo token fetch + guard registerToken on permission\n- Scope notification prompt dismissal cooldown per user\n- Include hooks/navigation/types in app tsconfig to satisfy ESLint project parsing\n\nCo-Authored-By: Warp <agent@warp.dev>
- Use useNotificationHandler in Expo root layout - Initialize Android channels / iOS categories on startup - Remove duplicate response listeners from useNotifications - Harden payload parsing + cancel delayed navigation on unmount Co-Authored-By: Warp <agent@warp.dev>
Co-Authored-By: Warp <agent@warp.dev>
069cc21 to
8b2f1a8
Compare
3f76a68 to
102202b
Compare
|
Vercel Unique URL: https://sendapp-5g3htxojb-0xsend.vercel.app |
Playwright Report
Summary
Suites✅ account-sendtag-add.onboarded.spec.ts (5/5 passed)can visit add sendtags page
can add a pending tag
cannot add an invalid tag name
cannot add more than 5 tags
cannot confirm a tag without paying
❌ account-sendtag-checkout.onboarded.spec.ts (0/3 passed)can confirm a tag
can refer a tag
can refer multiple tags in separate transactions
✅ account-settings-backup.onboarded.spec.ts (2/2 passed)can backup account
can remove a signer
✅ account.logged-in.spec.ts (2/2 passed)can visit account page
can update profile
❌ activity.onboarded.spec.ts (0/1 passed)can visit activity page and see correct activity feed
✅ contacts.onboarded.spec.ts (0/0 passed)✅ earn.onboarded.spec.ts (0/0 passed)✅ home.onboarded.spec.ts (1/1 passed)can visit token detail page
✅ leaderboard.logged-in.spec.ts (0/0 passed)can visit leaderboard page
✅ onboarding.logged-in.spec.ts (1/1 passed)can visit onboarding page
✅ profile-external-address.anon.spec.ts (0/0 passed)✅ profile-external-address.onboarded.spec.ts (0/0 passed)❌ profile.anon.spec.ts (1/2 passed)anon user can visit public profile
anon user cannot visit private profile
❌ profile.logged-in.spec.ts (0/1 passed)logged in user needs onboarding before visiting profile
✅ profile.onboarded.spec.ts (4/4 passed)can visit other user profile and send by tag
can visit my own profile
can visit private profile
can view activities between another profile
❌ send-token-upgrade.onboarded.spec.ts (0/1 passed)can upgrade their Send Token V0 to Send Token V1
❌ send.onboarded.spec.ts (0/13 passed)can send USDC starting from profile page
can send USDC using tag starting from home page
can send USDC using sendid starting from home page
can send USDC using address starting from home page
can send SEND starting from profile page
can send SEND using tag starting from home page
can send SEND using sendid starting from home page
can send SEND using address starting from home page
can send ETH starting from profile page
can send ETH using tag starting from home page
can send ETH using sendid starting from home page
can send ETH using address starting from home page
cannot send below minimum amount for SEND token
❌ sendtag-happy-path.onboarded.spec.ts (0/1 passed)sendtag complete happy path - create, confirm, and change main tag
sendtag main tag succession - auto-assigns new main when current is deleted
✅ sign-in.anon.spec.ts (3/3 passed)redirect on sign-in
redirect to send page on sign-in with recipient params
old user can login using phone number
✅ sign-up.anon.spec.ts (2/2 passed)can sign up
country code is selected based on geoip
❌ swap.onboarded.spec.ts (2/5 passed)can swap USDC for SEND
can swap USDC for ETH
can refresh swap form and preserve filled data
can't access form page without accepting risk dialog
can't access summary page without filling swap form
|

feat(notifications): add retries, rate limiting, receipts & token hygiene
Co-Authored-By: Warp agent@warp.dev
Harden transfer workflow notification payloads
Co-Authored-By: Warp agent@warp.dev
fix(notifications): align Expo receipts + TS shims\n\nCo-Authored-By: Warp agent@warp.dev
fix(notifications): stabilize push registration UX
fix(notifications): wire tap navigation + native config
Use useNotificationHandler in Expo root layout
Initialize Android channels / iOS categories on startup
Remove duplicate response listeners from useNotifications
Harden payload parsing + cancel delayed navigation on unmount
Co-Authored-By: Warp agent@warp.dev
fix(workflows): correct expo push concurrency limiter
Co-Authored-By: Warp agent@warp.dev