diff --git a/app/features/DesktopCapturerSourcesService/index.spec.ts b/app/features/DesktopCapturerSourcesService/index.spec.ts index ccbf690..6b09eb7 100644 --- a/app/features/DesktopCapturerSourcesService/index.spec.ts +++ b/app/features/DesktopCapturerSourcesService/index.spec.ts @@ -250,7 +250,7 @@ describe('DesktopCapturerSourcesService tests', () => { testWindowSource2 ); - const res = desktopCapturerService.getSourceDisplayIDBySourceID( + const res = desktopCapturerService.getSourceDisplayIDByDisplayCapturerSourceID( testScreenSource1.source.id ); diff --git a/app/features/DesktopCapturerSourcesService/index.ts b/app/features/DesktopCapturerSourcesService/index.ts index f28eb8b..d2b80f9 100644 --- a/app/features/DesktopCapturerSourcesService/index.ts +++ b/app/features/DesktopCapturerSourcesService/index.ts @@ -17,7 +17,7 @@ export function getSourceTypeFromSourceID( type SourcesDisappearListener = (ids: string[]) => void; type SharingSessionID = string; -class DesktopCapturerSources { +class DesktopCapturerSourcesService { sources: Map; lastAvailableScreenIDs: string[]; @@ -84,7 +84,7 @@ class DesktopCapturerSources { return appWindowSources; } - getSourceDisplayIDBySourceID(sourceID: string) { + getSourceDisplayIDByDisplayCapturerSourceID(sourceID: string) { let displayID = ''; [...this.sources.keys()].forEach((key) => { const source = this.sources.get(key); @@ -206,4 +206,4 @@ class DesktopCapturerSources { } } -export default DesktopCapturerSources; +export default DesktopCapturerSourcesService; diff --git a/app/features/PeerConnection/index.ts b/app/features/PeerConnection/index.ts index fd0e636..b129223 100644 --- a/app/features/PeerConnection/index.ts +++ b/app/features/PeerConnection/index.ts @@ -4,11 +4,7 @@ import { ipcRenderer } from 'electron'; import { prepare as prepareMessage } from '../../utils/message'; import DeskreenCrypto from '../../utils/crypto'; -import ConnectedDevicesService from '../ConnectedDevicesService'; -import RoomIDService from '../../server/RoomIDService'; -import SharingSessionService from '../SharingSessionService'; import connectSocket from '../../server/connectSocket'; -import DesktopCapturerSourcesService from '../DesktopCapturerSourcesService'; import handleCreatePeer from './handleCreatePeer'; import handleSocket from './handleSocket'; import handleRecieveEncryptedMessage from './handleRecieveEncryptedMessage'; @@ -19,6 +15,7 @@ import setDisplaySizeFromLocalStream from './handleSetDisplaySizeFromLocalStream import DesktopCapturerSourceType from '../DesktopCapturerSourcesService/DesktopCapturerSourceType'; import getAppLanguage from '../../utils/getAppLanguage'; import getAppTheme from '../../utils/getAppTheme'; +import { IpcEvents } from '../../main/IpcEvents.enum'; type DisplaySize = { width: number; height: number }; @@ -36,27 +33,11 @@ export default class PeerConnection { partnerDeviceDetails = {} as Device; signalsDataToCallUser: string[]; isCallStarted: boolean; - roomIDService: RoomIDService; - connectedDevicesService: ConnectedDevicesService; - sharingSessionService: SharingSessionService; - desktopCapturerSourcesService: DesktopCapturerSourcesService; onDeviceConnectedCallback: (device: Device) => void; displayID: string; sourceDisplaySize: DisplaySize | undefined; - constructor( - roomID: string, - sharingSessionID: string, - user: LocalPeerUser, - roomIDService: RoomIDService, - connectedDevicesService: ConnectedDevicesService, - sharingSessionsService: SharingSessionService, - desktopCapturerSourcesService: DesktopCapturerSourcesService - ) { - this.roomIDService = roomIDService; - this.connectedDevicesService = connectedDevicesService; - this.sharingSessionService = sharingSessionsService; - this.desktopCapturerSourcesService = desktopCapturerSourcesService; + constructor(roomID: string, sharingSessionID: string, user: LocalPeerUser) { this.sharingSessionID = sharingSessionID; this.isSocketRoomLocked = false; this.roomID = encodeURI(roomID); @@ -104,13 +85,14 @@ export default class PeerConnection { this.handleCreatePeerAfterDesktopCapturerSourceIDWasSet(); } - setDisplayIDByDesktopCapturerSourceID() { + async setDisplayIDByDesktopCapturerSourceID() { if ( !this.desktopCapturerSourceID.includes(DesktopCapturerSourceType.SCREEN) ) return; - this.displayID = this.desktopCapturerSourcesService.getSourceDisplayIDBySourceID( + this.displayID = await ipcRenderer.invoke( + IpcEvents.GetSourceDisplayIDByDesktopCapturerSourceID, this.desktopCapturerSourceID ); diff --git a/app/main/IpcEvents.enum.ts b/app/main/IpcEvents.enum.ts index 41ef6e4..90867ce 100644 --- a/app/main/IpcEvents.enum.ts +++ b/app/main/IpcEvents.enum.ts @@ -6,4 +6,5 @@ export enum IpcEvents { GetAppPath = 'get-app-path', ResetWaitingForConnectionSharingSession = 'reset-waiting-for-connection-sharing-session', SetDeviceConnectedStatus = 'set-device-connected-status', + GetSourceDisplayIDByDesktopCapturerSourceID = 'get-source-display-id-by-desktop-capturer-source-id', } diff --git a/app/main/ipcMainHandlers.ts b/app/main/ipcMainHandlers.ts index b8b2995..34f73c8 100644 --- a/app/main/ipcMainHandlers.ts +++ b/app/main/ipcMainHandlers.ts @@ -135,4 +135,13 @@ export default function initIpcMainHandlers( sharingSession?.setStatus(SharingSessionStatusEnum.CONNECTED); } }); + + ipcMain.handle( + IpcEvents.GetSourceDisplayIDByDesktopCapturerSourceID, + (_, sourceId) => { + return getDeskreenGlobal().desktopCapturerSourcesService.getSourceDisplayIDByDisplayCapturerSourceID( + sourceId + ); + } + ); } diff --git a/app/peerConnectionHelperRendererWindowIndex.tsx b/app/peerConnectionHelperRendererWindowIndex.tsx index d611676..2343615 100644 --- a/app/peerConnectionHelperRendererWindowIndex.tsx +++ b/app/peerConnectionHelperRendererWindowIndex.tsx @@ -1,35 +1,16 @@ -import { ipcRenderer, remote } from 'electron'; -import ConnectedDevicesService from './features/ConnectedDevicesService'; -import DesktopCapturerSourcesService from './features/DesktopCapturerSourcesService'; +import { ipcRenderer } from 'electron'; import PeerConnection from './features/PeerConnection'; -import SharingSessionService from './features/SharingSessionService'; -import RoomIDService from './server/RoomIDService'; // eslint-disable-next-line import/prefer-default-export export function handleIpcRenderer() { ipcRenderer.on('start-peer-connection', () => { - const desktopCapturerSourcesService = remote.getGlobal( - 'desktopCapturerSourcesService' - ) as DesktopCapturerSourcesService; - const roomIDService = remote.getGlobal('roomIDService') as RoomIDService; - const connectedDevicesService = remote.getGlobal( - 'connectedDevicesService' - ) as ConnectedDevicesService; - const sharingSessionService = remote.getGlobal( - 'sharingSessionService' - ) as SharingSessionService; - let peerConnection: PeerConnection; ipcRenderer.on('create-peer-connection-with-data', (_, data) => { peerConnection = new PeerConnection( data.roomID, data.sharingSessionID, - data.user, - roomIDService, - connectedDevicesService, - sharingSessionService, - desktopCapturerSourcesService + data.user ); peerConnection.setOnDeviceConnectedCallback((deviceData) => { diff --git a/app/utils/mainProcessHelpers/DeskreenGlobal.d.ts b/app/utils/mainProcessHelpers/DeskreenGlobal.d.ts index c7994a7..b84dcbe 100644 --- a/app/utils/mainProcessHelpers/DeskreenGlobal.d.ts +++ b/app/utils/mainProcessHelpers/DeskreenGlobal.d.ts @@ -2,8 +2,7 @@ import ConnectedDevicesService from '../../features/ConnectedDevicesService'; import SharingSessionService from '../../features/SharingSessionService'; import RendererWebrtcHelpersService from '../../features/PeerConnectionHelperRendererService'; import RoomIDService from '../../server/RoomIDService'; -import DesktopCapturerSources from '../../features/DesktopCapturerSourcesService'; -import DeskreenGlobalService from './DeskreenGlobalService.enum'; +import DesktopCapturerSourcesService from '../../features/DesktopCapturerSourcesService'; interface DeskreenGlobal { appPath: string; @@ -11,5 +10,5 @@ interface DeskreenGlobal { roomIDService: RoomIDService; connectedDevicesService: ConnectedDevicesService; sharingSessionService: SharingSessionService; - desktopCapturerSourcesService: DesktopCapturerSources; + desktopCapturerSourcesService: DesktopCapturerSourcesService; }