Skip to content

Feature/76 merchant push notifications#106

Open
fairbid01 wants to merge 2 commits into
ericmt-98:mainfrom
fairbid01:feature/76-merchant-push-notifications
Open

Feature/76 merchant push notifications#106
fairbid01 wants to merge 2 commits into
ericmt-98:mainfrom
fairbid01:feature/76-merchant-push-notifications

Conversation

@fairbid01
Copy link
Copy Markdown

@fairbid01 fairbid01 commented May 29, 2026

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

…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
@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented May 29, 2026

@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! 🚀

Learn more about application limits

@fairbid01
Copy link
Copy Markdown
Author

@ericmt-98 check PR and merge!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Push notifications for merchant incoming trades

2 participants