// import 'package:f_r_e_hub/components/templates_components/visit_request_template_component/visit_request_template_component_widget.dart'; // import 'package:firebase_messaging/firebase_messaging.dart'; // import 'package:flutter/material.dart'; // import 'package:rxdart/rxdart.dart'; // class NotificationHandler { // // Criar BehaviorSubjects para mensagens em primeiro plano e mensagens que abriram o app // final BehaviorSubject _onMessage = // BehaviorSubject(); // final BehaviorSubject _onMessageOpenedApp = // BehaviorSubject(); // // Inicializar listeners no construtor // NotificationHandler() { // initializeListeners(); // } // void initializeListeners() async { // // Listener para mensagens em primeiro plano // // FirebaseMessaging.onMessage.listen((message) { // // _onMessage.add(message); // Adicionar mensagem ao stream // // }); // RemoteMessage? initialMessage = // await FirebaseMessaging.instance.getInitialMessage(); // if (initialMessage != null) _onMessage.add(initialMessage); // // Listener para mensagens que abriram o app // FirebaseMessaging.onMessageOpenedApp.listen((message) { // _onMessageOpenedApp.add(message); // Adicionar mensagem ao stream // }); // } // void openedAppVisitRequestNotification( // RemoteMessage message, BuildContext context) { // log('openedAppVisitRequestNotification'); // showDialog( // context: context, // builder: (BuildContext context) { // return Dialog( // backgroundColor: // Colors.transparent, // Faz o fundo do Dialog ser transparente // child: VisitRequestTemplateComponentWidget( // name: message.data['nome'] ?? 'blabla', // reason: message.data['motivo'] ?? 'blabla', // message: message.data['mensagem'] ?? 'blabla', // document: message.data['document']), // ); // }); // } // // Método para tratar mensagens recebidas // void handleMessage(RemoteMessage message, BuildContext context) { // log('Notification Received!'); // message.data.forEach((key, value) { // log('$key: $value'); // }); // switch (message.data['type']) { // case 'visit_request': // openedAppVisitRequestNotification(message, context); // break; // case '': // break; // default: // log('Notification type not recognized'); // } // } // // Ouvir streams // void listenToNotifications(BuildContext context) { // _onMessage.listen((message) { // handleMessage(message, context); // }); // _onMessageOpenedApp.listen((message) { // handleMessage(message, context); // }); // } // // Dispor streams // void dispose() { // _onMessage.close(); // _onMessageOpenedApp.close(); // } // }