import 'dart:developer'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/cupertino.dart'; import '../api/marianumcloud/talk/room/getRoom.dart'; import '../api/marianumcloud/talk/room/getRoomParams.dart'; import '../model/accountData.dart'; import 'notificationService.dart'; class NotificationController { @pragma('vm:entry-point') static Future onBackgroundMessageHandler(RemoteMessage message) async { log("Handling a background notification: ${message.messageId}"); await Firebase.initializeApp(); AccountData().waitForPopulation().then((value) { log("User account status: $value"); if(value) { GetRoom( GetRoomParams( includeStatus: false, ), ).run().then((value) { var messageCount = value.data.map((e) => e.unreadMessages).reduce((a, b) => a + b); var chatCount = value.data.map((e) => e.unreadMessages).length; var people = value.data.where((e) => e.unreadMessages > 0).map((e) => e.displayName.split(" ")[0]); final NotificationService service = NotificationService(); service.initializeNotifications().then((value) { service.showNotification( title: "Du hast $messageCount ungelesene Nachrichten!", body: "In $chatCount Chats, von ${people.join(", ")}", badgeCount: messageCount, ); }); }); } }); } static Future onForegroundMessageHandler(RemoteMessage message, BuildContext context) async { NotificationService().showToast(message: "Du hast eine neue Talk Nachricht!", context: context); } }