-
Notifications
You must be signed in to change notification settings - Fork 4
RE1-T88 Removing expo-notification so that FCM works. #183
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
Conversation
WalkthroughThe PR refactors the push notification service from Expo Notifications to Firebase Cloud Messaging (FCM) with Notifee. Changes include package updates, new comprehensive documentation, service implementation migration using FCM for messaging and Notifee for Android channel management, corresponding test suite refactoring, and badge management updates. Changes
Sequence DiagramsequenceDiagram
participant App as App Lifecycle
participant Notifee as Notifee
participant FCM as Firebase Messaging
participant Service as Push Notification<br/>Service
participant Modal as Push Modal<br/>Store
App->>Service: initialize()
Service->>Notifee: createChannel(Android)
Service->>FCM: onMessage(listener)
Service->>FCM: onNotificationOpenedApp(listener)
Service->>FCM: setBackgroundMessageHandler()
Service->>FCM: getInitialNotification()
rect rgb(200, 220, 255)
Note over FCM,Service: Foreground: Message Received
FCM->>Service: onMessage(remoteMessage)
Service->>Service: handleRemoteMessage()
alt eventCode present
Service->>Modal: emit(eventCode)
end
end
rect rgb(220, 200, 255)
Note over FCM,Service: Background: User Taps Notification
FCM->>Service: onNotificationOpenedApp()
Service->>Service: handleNotificationTap()
alt eventCode present
Service->>Modal: emit(eventCode)
end
end
rect rgb(200, 255, 220)
Note over FCM,Service: Token Management
Service->>FCM: requestPermission()
FCM-->>Service: AuthorizationStatus
Service->>FCM: getToken()
FCM-->>Service: token
Service->>Service: registerToken(backend)
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes
Possibly related PRs
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (5)
🧰 Additional context used📓 Path-based instructions (7)**/*.{ts,tsx}📄 CodeRabbit inference engine (.cursorrules)
Files:
**/*.tsx📄 CodeRabbit inference engine (.cursorrules)
Files:
**/*📄 CodeRabbit inference engine (.cursorrules)
Files:
{components/ui/**/*.{ts,tsx},**/*.tsx}📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Files:
**/*.{test.ts,test.tsx,spec.ts,spec.tsx}📄 CodeRabbit inference engine (.cursorrules)
Files:
**/__tests__/**/*.{ts,tsx}📄 CodeRabbit inference engine (.cursorrules)
Files:
**/*.{test,spec}.{ts,tsx}📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Files:
🧠 Learnings (5)📚 Learning: 2025-08-12T03:33:40.238ZApplied to files:
📚 Learning: 2025-08-12T03:34:25.992ZApplied to files:
📚 Learning: 2025-08-12T03:34:25.992ZApplied to files:
📚 Learning: 2025-08-12T03:34:25.992ZApplied to files:
📚 Learning: 2025-08-12T03:33:40.238ZApplied to files:
🧬 Code graph analysis (3)src/app/_layout.tsx (1)
src/services/__tests__/push-notification.test.ts (2)
src/services/push-notification.ts (3)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
🔇 Additional comments (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Approve |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR is approved.
Summary by CodeRabbit
New Features
Improvements
Documentation
Tests