import 'package:get/get.dart'; import 'package:logger/logger.dart'; import 'package:marco/controller/dashboard/attendance_screen_controller.dart'; /// Handles incoming FCM notification actions and updates UI/controllers. class NotificationActionHandler { static final Logger _logger = Logger(); /// Main entry point — call this for any notification `data` map. static void handle(Map data) { _logger.i('📲 Handling notification action: $data'); if (data.isEmpty) { _logger.w('⚠️ Empty notification data received.'); return; } final type = data['type']; final action = data['Action']; final keyword = data['Keyword']; if (type != null) { switch (type) { case 'expense_updated': break; case 'attendance_updated': _handleAttendanceUpdated(data); break; default: _logger.w('⚠️ Unknown notification type: $type'); } } else if (keyword == 'Attendance' && action == 'CHECK_IN' || action == 'CHECK_OUT' || action == 'REQUEST_REGULARIZE ' || action == 'REQUEST_DELETE '|| action == 'REGULARIZE ' || action == 'REGULARIZE_REJECT ') { // Matches your current logs _handleAttendanceUpdated(data); } else { _logger.w('⚠️ Unhandled notification: $data'); } } static void _handleAttendanceUpdated(Map data) { try { final controller = Get.find(); controller.refreshDataFromNotification( projectId: data['ProjectId'], ); _logger.i('✅ AttendanceController refreshed from notification.'); } catch (e) { _logger.w('⚠️ AttendanceController not found, cannot update.'); } } }