64 lines
2.4 KiB
Dart
64 lines
2.4 KiB
Dart
import 'package:firebase_messaging/firebase_messaging.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
import '../widget/debug/debugTile.dart';
|
|
import '../widget/debug/jsonViewer.dart';
|
|
import 'notificationTasks.dart';
|
|
|
|
class NotificationController {
|
|
@pragma('vm:entry-point')
|
|
static Future<void> onBackgroundMessageHandler(RemoteMessage message) async {
|
|
NotificationTasks.updateBadgeCount(message);
|
|
return; // Displaying the notification is curently done via the Firebase SDK itself. The Message is server-generated.
|
|
|
|
//
|
|
// 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.where((e) => e.unreadMessages > 0).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<void> onForegroundMessageHandler(RemoteMessage message, BuildContext context) async {
|
|
NotificationTasks.updateProviders(context);
|
|
NotificationTasks.updateBadgeCount(message);
|
|
}
|
|
|
|
static Future<void> onAppOpenedByNotification(RemoteMessage message, BuildContext context) async {
|
|
NotificationTasks.navigateToTalk();
|
|
NotificationTasks.updateProviders(context);
|
|
|
|
DebugTile(context).run(() {
|
|
showDialog(context: context, builder: (context) => AlertDialog(
|
|
title: const Text('Notification report'),
|
|
content: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
const Text('Dieser Bericht wird angezeigt, da du den Entwicklermodus aktiviert hast und die App über eine Benachrichtigung geöffnet wurde.'),
|
|
Text(JsonViewer.format(message.data)),
|
|
],
|
|
),
|
|
));
|
|
});
|
|
}
|
|
}
|