import 'dart:developer'; import 'package:flutter/foundation.dart'; /// Helper class to debug call issues class CallDebugHelper { static void logCallInitiation({ required String callerEmployeeNumber, required String calleeEmployeeNumber, required bool isVideo, required String hubConnectionState, }) { log('═══════════════════════════════════════════', name: 'CALL_DEBUG'); log('📞 INITIATING CALL', name: 'CALL_DEBUG'); log('═══════════════════════════════════════════', name: 'CALL_DEBUG'); log('Caller: $callerEmployeeNumber', name: 'CALL_DEBUG'); log('Callee: $calleeEmployeeNumber', name: 'CALL_DEBUG'); log('Type: ${isVideo ? "VIDEO" : "AUDIO"}', name: 'CALL_DEBUG'); log('Hub State: $hubConnectionState', name: 'CALL_DEBUG'); log('═══════════════════════════════════════════', name: 'CALL_DEBUG'); } static void logConnectionStatus({ required String employeeNumber, required bool isConnected, required bool handlersRegistered, String? additionalInfo, }) { log('═══════════════════════════════════════════', name: 'CALL_DEBUG'); log('📡 CONNECTION STATUS CHECK', name: 'CALL_DEBUG'); log('═══════════════════════════════════════════', name: 'CALL_DEBUG'); log('Employee: $employeeNumber', name: 'CALL_DEBUG'); log('Connected: $isConnected', name: 'CALL_DEBUG'); log('Handlers Registered: $handlersRegistered', name: 'CALL_DEBUG'); if (additionalInfo != null) { log('Info: $additionalInfo', name: 'CALL_DEBUG'); } log('═══════════════════════════════════════════', name: 'CALL_DEBUG'); } static void logEventReceived({ required String eventName, required dynamic rawData, required String currentStatus, }) { log('═══════════════════════════════════════════', name: 'CALL_DEBUG'); log('📨 SIGNALR EVENT RECEIVED', name: 'CALL_DEBUG'); log('═══════════════════════════════════════════', name: 'CALL_DEBUG'); log('Event: $eventName', name: 'CALL_DEBUG'); log('Current Status: $currentStatus', name: 'CALL_DEBUG'); log('Raw Data: $rawData', name: 'CALL_DEBUG'); log('═══════════════════════════════════════════', name: 'CALL_DEBUG'); } static void printCallTroubleshooting() { if (kDebugMode) { print('\n'); print('╔════════════════════════════════════════════════════════════╗'); print('║ CALL NOT RECEIVED - TROUBLESHOOTING ║'); print('╚════════════════════════════════════════════════════════════╝'); print(''); print('Check the following on BOTH devices:'); print(''); print('1. SignalR Connection:'); print(' Look for: "🔌 SignalR Hub Connection: Started"'); print(' Look for: "✅ All call handlers registered successfully"'); print(''); print('2. Employee Numbers:'); print(' Verify sender and recipient employee numbers are correct'); print(' Look for: "🔵 [CALL] Sender: XXX"'); print(' Look for: " - target: XXX"'); print(''); print('3. Backend Response:'); print(' On receiving device, look for:'); print(' "📞 [CALL EVENT] OnIncomingCallAsync received"'); print(''); print('4. Common Issues:'); print(' ❌ Receiving device not connected to SignalR'); print(' ❌ Call handlers not registered (app not in chat screen)'); print(' ❌ Wrong employee number in backend mapping'); print(' ❌ Backend feature flag disabled for audio/video calls'); print(' ❌ Network connectivity issues'); print(''); print('5. Backend Logs:'); print(' Check backend logs for CallUserAsync invocation'); print(' Verify backend is routing to correct user connection'); print(''); print('╚════════════════════════════════════════════════════════════╝'); print('\n'); } } }