diff --git a/app/providers/CallProvider/CallProvider.tsx b/app/providers/CallProvider/CallProvider.tsx index 92753a7..d955f2a 100644 --- a/app/providers/CallProvider/CallProvider.tsx +++ b/app/providers/CallProvider/CallProvider.tsx @@ -293,8 +293,19 @@ export function CallProvider(props : CallProviderProps) { setCallState(CallState.WEB_RTC_EXCHANGE); } if(signalType == SignalType.CREATE_ROOM) { + if(!sessionKeys){ + /** + * Сервер может отправить CREATE_ROOM сигнал, даже если мы приняли звонок на другом устройстве, по этому проверяем, + * на этом ли устройстве звонок принят посредством проверки наличия сгенерированных ключей шифрования + */ + stopLoopSound(); + stopSound(); + end(); + return; + } /** - * Создана комната для обмена WebRTC потоками + * Создана комната для обмена WebRTC потоками, но такое событие сервер может отправить даже если звонок + * был принят с другого устройства, по этому проверяем, наш ли звонок */ roomIdRef.current = packet.getRoomId(); info("WebRTC room created with id: " + packet.getRoomId()); @@ -443,8 +454,7 @@ export function CallProvider(props : CallProviderProps) { /** * Только если звонок был активен воспроизводим звуки */ - stopLoopSound(); - stopSound(); + playSound("end_call.mp3"); } if (remoteAudioRef.current) { remoteAudioRef.current.pause(); @@ -454,7 +464,6 @@ export function CallProvider(props : CallProviderProps) { setDuration(0); durationIntervalRef.current && clearInterval(durationIntervalRef.current); setWindowPriority(false); - playSound("end_call.mp3"); peerConnectionRef.current?.close(); peerConnectionRef.current = null; roomIdRef.current = "";