From e3dd8162fad23d2c0c6db81e16f89618d8367b6b Mon Sep 17 00:00:00 2001 From: misha Date: Wed, 17 Jun 2026 11:33:17 +0300 Subject: [PATCH] fix: ci/cd error fixed --- .../video_call_callkit_coordinator.dart | 97 ++++++++++++++++--- 1 file changed, 82 insertions(+), 15 deletions(-) diff --git a/lib/features/video_calls/services/video_call_callkit_coordinator.dart b/lib/features/video_calls/services/video_call_callkit_coordinator.dart index a8aa9101..55f5821e 100644 --- a/lib/features/video_calls/services/video_call_callkit_coordinator.dart +++ b/lib/features/video_calls/services/video_call_callkit_coordinator.dart @@ -146,21 +146,45 @@ class VideoCallCallKitCoordinator { await _firebaseApi.registerPushToken(); case CallEventActionCallIncoming(:final callKitParams): _cacheCallKitParams(callKitParams); - case CallEventActionCallAccept(:final id): - await _handleAccept(id); - case CallEventActionCallCallback(:final id): - await _handleAccept(id); - case CallEventActionCallDecline(:final id): - await _handleDecline(id); - case CallEventActionCallEnded(:final id): - await _handleDecline(id); - case CallEventActionCallTimeout(:final id): - await _handleDecline(id); + case CallEventActionCallAccept(): + await _handleAcceptEvent(event); + case CallEventActionCallCallback(): + await _handleAcceptEvent(event); + case CallEventActionCallDecline(): + await _handleDeclineEvent(event); + case CallEventActionCallEnded(): + await _handleDeclineEvent(event); + case CallEventActionCallTimeout(): + await _handleDeclineEvent(event); default: break; } } + Future _handleAcceptEvent(CallEvent event) async { + final id = _callKitEventId(event); + if (id == null) { + log( + 'VideoCallCallKitCoordinator: accept event without callKit id, event=$event', + name: 'VideoCallCallKit', + ); + return; + } + await _handleAccept(id); + } + + Future _handleDeclineEvent(CallEvent event) async { + final id = _callKitEventId(event); + if (id == null) { + log( + 'VideoCallCallKitCoordinator: decline/end event without callKit id, event=$event', + name: 'VideoCallCallKit', + ); + return; + } + await _handleDecline(id); + } + Future _captureCallKitEventToSentry(CallEvent event) async { if (!Platform.isIOS) return; final context = { @@ -177,15 +201,15 @@ class VideoCallCallKitCoordinator { 'extra': callKitParams.extra?.toString(), }); } else if (event is CallEventActionCallAccept) { - context['id'] = event.id; + _addCallKitEventDetails(context, event); } else if (event is CallEventActionCallCallback) { - context['id'] = event.id; + _addCallKitEventDetails(context, event); } else if (event is CallEventActionCallDecline) { - context['id'] = event.id; + _addCallKitEventDetails(context, event); } else if (event is CallEventActionCallEnded) { - context['id'] = event.id; + _addCallKitEventDetails(context, event); } else if (event is CallEventActionCallTimeout) { - context['id'] = event.id; + _addCallKitEventDetails(context, event); } await Sentry.captureMessage( @@ -199,11 +223,54 @@ class VideoCallCallKitCoordinator { ); } + void _addCallKitEventDetails(Map context, CallEvent event) { + final params = _callKitEventParams(event); + if (params != null) { + context.addAll({ + 'id': params.id, + 'handle': params.handle, + 'nameCaller': params.nameCaller, + 'isAccepted': params.isAccepted, + 'extra': params.extra?.toString(), + }); + return; + } + + final id = _callKitEventId(event); + if (id != null) { + context['id'] = id; + } + } + void _cacheCallKitParams(CallKitParams params) { _callKitParamsById[params.id] = params; _activeCallKitId = params.id; } + CallKitParams? _callKitEventParams(CallEvent event) { + try { + final params = (event as dynamic).callKitParams; + if (params is CallKitParams) return params; + } catch (_) { + return null; + } + return null; + } + + String? _callKitEventId(CallEvent event) { + final params = _callKitEventParams(event); + final paramsId = params?.id.trim(); + if (paramsId != null && paramsId.isNotEmpty) return paramsId; + + try { + final id = (event as dynamic).id; + if (id is String && id.trim().isNotEmpty) return id.trim(); + } catch (_) { + return null; + } + return null; + } + CallKitParams? _paramsForCallId(String id) => _callKitParamsById[id]; Future _paramsForCallIdOrActiveCall(String id) async {