1
0
mirror of https://github.com/pavlobu/deskreen.git synced 2025-05-18 08:20:10 -07:00
deskreen/app/features/PeerConnection/handleSelfDestroy.ts
2022-05-29 11:35:36 +02:00

35 lines
1.3 KiB
TypeScript

import { ipcRenderer } from 'electron';
import { IpcEvents } from '../../main/IpcEvents.enum';
import SharingSessionStatusEnum from '../SharingSessionService/SharingSessionStatusEnum';
import NullSimplePeer from './NullSimplePeer';
import NullUser from './NullUser';
export default function handleSelfDestroy(peerConnection: PeerConnection) {
peerConnection.partner = NullUser;
peerConnection.connectedDevicesService.removeDeviceByID(
peerConnection.partnerDeviceDetails.id
);
if (peerConnection.peer !== NullSimplePeer) {
peerConnection.peer.destroy();
}
if (peerConnection.localStream) {
peerConnection.localStream.getTracks().forEach((track) => {
track.stop();
});
peerConnection.localStream = null;
}
const sharingSession = peerConnection.sharingSessionService.sharingSessions.get(
peerConnection.sharingSessionID
);
sharingSession?.setStatus(SharingSessionStatusEnum.DESTROYED);
sharingSession?.destroy();
peerConnection.sharingSessionService.sharingSessions.delete(
peerConnection.sharingSessionID
);
peerConnection.onDeviceConnectedCallback = () => {};
peerConnection.isCallStarted = false;
peerConnection.socket.disconnect();
ipcRenderer.invoke(IpcEvents.UnmarkRoomIDAsTaken, peerConnection.roomID);
}