Обработка END_CALL_BECAUSE_BUSY и END_CALL_BECAUSE_PEER_DISCONNECTED

This commit is contained in:
RoyceDa
2026-03-17 18:39:06 +02:00
parent 6dd348230f
commit fcf4204063
2 changed files with 51 additions and 1 deletions

View File

@@ -8,6 +8,8 @@ import { usePacket } from "../ProtocolProvider/usePacket";
import { usePublicKey } from "../AccountProvider/usePublicKey";
import { PacketWebRTC, WebRTCSignalType } from "../ProtocolProvider/protocol/packets/packet.webrtc";
import { PacketIceServers } from "../ProtocolProvider/protocol/packets/packet.ice.servers";
import { modals } from "@mantine/modals";
import { Button, Flex, Text } from "@mantine/core";
export interface CallContextValue {
@@ -165,6 +167,46 @@ export function CallProvider(props : CallProviderProps) {
usePacket(26, async (packet: PacketSignalPeer) => {
const signalType = packet.getSignalType();
if(signalType == SignalType.END_CALL_BECAUSE_BUSY) {
modals.open({
title: 'Busy',
centered: true,
children: (
<>
<Text size="sm">
Line is busy, the user is currently on another call. Please try again later.
</Text>
<Flex align={'center'} justify={'flex-end'}>
<Button color={'red'} variant={'subtle'} onClick={() => modals.closeAll()} mt="md">
Close
</Button>
</Flex>
</>
),
withCloseButton: false
});
end();
}
if(signalType == SignalType.END_CALL_BECAUSE_PEER_DISCONNECTED) {
modals.open({
title: 'Connection lost',
centered: true,
children: (
<>
<Text size="sm">
The connection with the user was lost. The call has ended.
</Text>
<Flex align={'center'} justify={'flex-end'}>
<Button color={'red'} variant={'subtle'} onClick={() => modals.closeAll()} mt="md">
Close
</Button>
</Flex>
</>
),
withCloseButton: false
});
end();
}
if(activeCall){
/**
* У нас уже есть активный звонок, игнорируем все сигналы, кроме сигналов от текущего звонка