Repository navigation
fix(mobile): keep push data on Android app-drawn notifications - #2494
Conversation
RequestsTrigger was neither a Firebase, schedulable nor channel-aware trigger, so Expo's NotificationSerializer gave JS no content.data for those notifications. Resolved requests were never dismissed from the shade, and taps could not route. The rebuilt request now uses Expo's ChannelAwareTrigger on the requests channel. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrtPca5pD72Gdx4CFkQdNi
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JrtPca5pD72Gdx4CFkQdNi
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Android phone result (b71823e, the same code as merged main 4227b25): PASS for removing handled request notifications (Xiaomi, Android 16 / HyperOS 3, store build plus isolated QA Host at the same commit, battery saver unrestricted and autostart on, app in the background the whole time) Evidence: 2494-android-push/phone-b71823e6 (commit 986ed0b):
The two identical Mira notifications in the shade are two real messages with different message IDs, not a duplicate notification. Not covered in this run: tapping a DM, group or approval notification to check that it opens the right screen. That goes in the next run. Generated by Claude Code |
|
Android phone result: notification taps and actions PASS (Xiaomi, Android 16 / HyperOS 3, store build installed over the existing app from main 77ddca9, isolated QA Host at the same commit, app in the background before every tap) Evidence: 2494-android-push/phone-tap (commit b48f6b9),
Both action buttons bring the app to the foreground ( Notes:
All Android push screenshots for this series (#2397, #2465, #2483, #2485, #2491, #2494):
Generated by Claude Code |
Requested by Vain · project thread
Why
The phone check of #2491 (result) confirmed that an unread DM is no longer cleared, but it found another problem. The notifications for a secret-input request and an approval that had already been handled were never dismissed, not even after the app was opened.
Cause: #2485 added
RequestsTrigger, which is neither aFirebaseNotificationTriggernor aSchedulableNotificationTriggernor aChannelAwareTrigger. Expo'sNotificationSerializer.toBundle(NotificationRequest)only fillscontent.data/dataStringfor those three kinds of trigger. As a result, the notification objects JS gets back fromgetPresentedNotificationsAsync()carry no data, soparsePushDatareturnsundefinedandpush-session.reflect()can't match any resolved request. Tapping a notification goes through the same serialization, so taps can't route by data either.Change outline
ConversationHandlingDelegate: the rebuilt request now uses Expo's ownChannelAwareTrigger("requests"). That still pins the notification to the requests channel, and the serializer passes our data JSON back to JS asdataString.RequestsTrigger.Verification
Generated by Claude Code
Summary by CodeRabbit