// 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<RemoteMessage> _onMessage =
//       BehaviorSubject<RemoteMessage>();
//   final BehaviorSubject<RemoteMessage> _onMessageOpenedApp =
//       BehaviorSubject<RemoteMessage>();

//   // 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();
//   }
// }
