import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import '../widget/debug/debug_tile.dart'; import '../widget/debug/json_viewer.dart'; import 'notification_tasks.dart'; class NotificationController { // Notification display is handled by the Firebase SDK using server-generated payloads. @pragma('vm:entry-point') static Future onBackgroundMessageHandler(RemoteMessage message) async { NotificationTasks.updateBadgeCount(message); } static Future onForegroundMessageHandler(RemoteMessage message, BuildContext context) async { NotificationTasks.updateProviders(context); NotificationTasks.updateBadgeCount(message); } static Future onAppOpenedByNotification(RemoteMessage message, BuildContext context) async { NotificationTasks.navigateToTalk(context, chatToken: _extractChatToken(message)); 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)), ], ), )); }); } static String? _extractChatToken(RemoteMessage message) { for (final key in const ['chatToken', 'token', 'roomToken']) { final value = message.data[key]; if (value is String && value.isNotEmpty) return value; } return null; } }