@@ -22,24 +22,30 @@ class NotificationRepository {
2222 );
2323 }
2424
25- Future <void > init (BuildContext context ) async {
25+ Future <void > init () async {
2626 RemoteMessage ? initialMessage =
2727 await FirebaseMessaging .instance.getInitialMessage ();
2828
2929 if (initialMessage != null ) {
30- _handleBackgroundMessage (context, initialMessage);
30+ _handleBackgroundMessage (initialMessage);
3131 }
3232
3333 FirebaseMessaging .onMessageOpenedApp.listen (
34- (message) => _handleBackgroundMessage (context, message),
34+ (message) => _handleBackgroundMessage (message),
3535 );
3636
3737 FirebaseMessaging .onMessage.listen (
38- (message) => _handleForegroundMessage (context, message),
38+ (message) => _handleForegroundMessage (message),
3939 );
4040 }
4141
42- void _handleForegroundMessage (BuildContext context, RemoteMessage message) {
42+ void _handleForegroundMessage (RemoteMessage message) {
43+ final context = application.currentContext;
44+
45+ if (context == null ) {
46+ return ;
47+ }
48+
4349 final type = message.data['type' ];
4450
4551 SnackBar ? snackBar;
@@ -81,7 +87,13 @@ class NotificationRepository {
8187 scaffoldMessenger.currentState? .showSnackBar (snackBar);
8288 }
8389
84- void _handleBackgroundMessage (BuildContext context, RemoteMessage message) {
90+ void _handleBackgroundMessage (RemoteMessage message) {
91+ final context = application.currentContext;
92+
93+ if (context == null ) {
94+ return ;
95+ }
96+
8597 final type = message.data['type' ];
8698
8799 if (type == NotificationType .room.name) {
@@ -99,6 +111,7 @@ class NotificationRepository {
99111 DirectMessageScreen .routeName,
100112 arguments: DirectMessageArguments (
101113 username: username,
114+ fromMessages: _isMessages (context),
102115 ),
103116 );
104117 }
@@ -111,6 +124,13 @@ class NotificationRepository {
111124 );
112125 }
113126
127+ _isMessages (BuildContext context) {
128+ final name = ModalRoute .of (context)? .settings.name;
129+
130+ return name == DirectMessageScreen .routeName ||
131+ name == RoomScreen .routeName;
132+ }
133+
114134 Future <void > requestPermission () async {
115135 await _fcm.requestPermission ();
116136
0 commit comments