Skip to content

Commit d2398d5

Browse files
committed
feat: initial notifications implementationg
1 parent f097b60 commit d2398d5

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

lib/src/app.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import 'package:auth/src/features/auth/logic/models/user.dart';
44
import 'package:auth/src/features/auth/logic/repository/auth_repository.dart';
55
import 'package:auth/src/features/home/views/screens/home_screen.dart';
66
import 'package:auth/src/features/notification/logic/repository/notification_repository.dart';
7-
import 'package:auth/src/features/notification/views/widgets/notification_handler.dart';
87
import 'package:flutter/material.dart';
98
import 'package:flutter_bloc/flutter_bloc.dart';
109

@@ -25,7 +24,7 @@ class _MyAppState extends State<MyApp> {
2524
void initState() {
2625
super.initState();
2726

28-
notificationRepository.init(context);
27+
notificationRepository.init();
2928
}
3029

3130
@override

lib/src/features/notification/logic/repository/notification_repository.dart

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)