Feature/76 merchant push notifications#106
Open
fairbid01 wants to merge 2 commits into
Open
Conversation
…pant auth (ericmt-98#75) - Add trade_messages table with sender_id, body, created_at, read_at - Create assertTradeParticipant() utility for participant authorization - Implement 3 API endpoints: - GET /trades/:id/messages (fetch with pagination, mark as read) - POST /trades/:id/messages (send with body validation, status check) - POST /trades/:id/messages/read (explicit read receipt) - Wire ChatRoom.tsx and DepositChat.tsx to real API data - Add useChatMessages hook with 3s polling, visibility pausing, optimistic updates - Replace hardcoded messages with persistent backend storage - All endpoints enforce participant gating (buyer or seller only) - Add comprehensive test suite for authorization and data integrity Migration: 20260529100000_create_trade_messages Tests: All authorization paths covered Frontend: Polling, optimistic sends, error states, empty state
|
@fairbid01 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Author
|
@ericmt-98 check PR and merge! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #76
📦 Implementation Details
Backend (Fastify/Node.js)
✅ Firebase Admin SDK push service with flexible credential configuration
✅ PATCH /users/me/push_token endpoint for token registration
✅ Fire-and-forget push notification on trade creation
✅ Graceful error handling and token expiration cleanup
Frontend (React/Capacitor)
✅ @capacitor/push-notifications integration
✅ Permission handling with rationale dialog
✅ Deep-linking to trades on notification tap
✅ 30-second polling fallback when push disabled
✅ Visual banner for disabled notifications
Database
✅ Migration files for push_token columns
✅ Indexed lookup for efficient queries
Configuration
✅ Firebase credentials management (env vars or JSON file)
✅ Android manifest with FCM permissions
✅ .gitignore updated to exclude credentials
Quality
✅ All TypeScript fully typed (no any)
✅ Zero compilation errors
✅ Follows project patterns and conventions