feat: implement background notif firebase stream
Some checks failed
continuous-integration/drone/pr Build is failing

This commit is contained in:
Malo Léon 2023-08-18 10:00:27 +02:00
parent f4972e629d
commit 51efc56ced

View File

@ -6,6 +6,8 @@ import 'package:firebase_messaging/firebase_messaging.dart'
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:wyatt_cloud_messaging_bloc_base/wyatt_cloud_messaging_bloc.dart';
typedef CloudMessagingStreamController = StreamController<RemoteNotification>;
class CloudMessagingFirebaseDataSource extends CloudMessagingRemoteDataSource {
final FirebaseMessaging _firebaseMessagingInstance =
FirebaseMessaging.instance;
@ -18,8 +20,36 @@ class CloudMessagingFirebaseDataSource extends CloudMessagingRemoteDataSource {
}
@override
Future<Stream<RemoteNotification>> onNotificationBackground() {
throw UnimplementedError();
Future<Stream<RemoteNotification>> onNotificationBackground() async {
final backgroundStreamController = CloudMessagingStreamController();
Future<void> getLastBackgroundNotification() async {
final lastNotification =
await _firebaseMessagingInstance.getInitialMessage();
if (lastNotification != null) {
backgroundStreamController.add(
RemoteNotification(
title: lastNotification.notification?.title,
body: lastNotification.notification?.body,
data: lastNotification.data,
),
);
}
FirebaseMessaging.onMessageOpenedApp.listen((notification) {
backgroundStreamController.add(
RemoteNotification(
title: notification.notification?.title,
body: notification.notification?.body,
data: notification.data,
),
);
});
}
unawaited(getLastBackgroundNotification());
return backgroundStreamController.stream;
}
@override
@ -47,8 +77,8 @@ class CloudMessagingFirebaseDataSource extends CloudMessagingRemoteDataSource {
iOS: DarwinInitializationSettings(),
);
final StreamController<RemoteNotification> foregroundStream =
StreamController<RemoteNotification>();
final CloudMessagingStreamController foregroundStream =
CloudMessagingStreamController();
await _localNotificationInstance.initialize(
initializationSettings,