1
0
mirror of https://github.com/pavlobu/deskreen.git synced 2025-05-18 16:30:10 -07:00
deskreen/app/features/PeerConnection/handleCreatePeer.ts
2021-01-17 23:45:59 +02:00

48 lines
1.6 KiB
TypeScript

import SimplePeer from 'simple-peer';
import createDesktopCapturerStream from './createDesktopCapturerStream';
import handlePeerOnData from './handlePeerOnData';
// import setSdpMediaBitrate from './setSdpMediaBitrate';
import Logger from '../../utils/LoggerWithFilePrefix';
import NullSimplePeer from './NullSimplePeer';
import simplePeerHandleSdpTransform from './simplePeerHandleSdpTransform';
const log = new Logger(__filename);
export default function handleCreatePeer(peerConnection: PeerConnection) {
return new Promise((resolve, reject) => {
createDesktopCapturerStream(
peerConnection,
peerConnection.desktopCapturerSourceID
)
.then(() => {
// eslint-disable-next-line promise/always-return
if (peerConnection.peer === NullSimplePeer) {
peerConnection.peer = new SimplePeer({
initiator: true,
config: { iceServers: [] },
sdpTransform: simplePeerHandleSdpTransform,
});
}
// eslint-disable-next-line promise/always-return
if (peerConnection.localStream !== null) {
peerConnection.peer.addStream(peerConnection.localStream);
}
peerConnection.peer.on('signal', (data: string) => {
// fired when simple peer and webrtc done preparation to start call on peerConnection machine
peerConnection.signalsDataToCallUser.push(data);
});
peerConnection.peer.on('data', (data) => {
handlePeerOnData(peerConnection, data);
});
resolve(undefined);
})
.catch((e) => {
log.error(e);
reject();
});
});
}