feat(video_calls): fixed ios push UI

This commit is contained in:
misha
2026-06-16 18:30:16 +03:00
parent 705538ac85
commit e0d697e8d0
3 changed files with 78 additions and 15 deletions

View File

@@ -112,6 +112,18 @@ class VideoCallCallKitCoordinator {
CallKitParams? _paramsForCallId(String id) => _callKitParamsById[id];
Future<CallKitParams?> _paramsForCallIdOrActiveCall(String id) async {
final cached = _paramsForCallId(id);
if (cached != null || !Platform.isIOS) return cached;
final activeCalls = await FlutterCallkitIncoming.activeCalls();
for (final params in activeCalls) {
_cacheCallKitParams(params);
}
return _paramsForCallId(id);
}
Future<void> _openActiveCallKitCallIfNeeded() async {
if (!Platform.isIOS) return;
if (_cubit.state.connectPhase != VideoCallConnectPhase.idle) return;
@@ -121,6 +133,7 @@ class VideoCallCallKitCoordinator {
for (final params in activeCalls) {
_cacheCallKitParams(params);
if (!params.isAccepted) continue;
final extra = params.extra ?? <String, dynamic>{};
final conversationUuid = _parseConversationUuid(
extra,
@@ -191,12 +204,12 @@ class VideoCallCallKitCoordinator {
if (_acceptHandledCallKitIds.contains(callKitId)) return;
_activeCallKitId = callKitId;
final params = _paramsForCallId(callKitId);
final params = await _paramsForCallIdOrActiveCall(callKitId);
final extra = params?.extra ?? <String, dynamic>{};
final conversationUuid = _parseConversationUuid(
extra,
handle: params?.handle,
handle: params?.handle ?? callKitId,
);
if (conversationUuid.isEmpty) {
log(