mirror of
https://github.com/pavlobu/deskreen.git
synced 2025-05-19 00:40:11 -07:00
83 lines
2.5 KiB
TypeScript
83 lines
2.5 KiB
TypeScript
import { Display, ipcMain, BrowserWindow, screen } from 'electron';
|
|
import settings from 'electron-settings';
|
|
import i18n from '../configs/i18next.config';
|
|
import ConnectedDevicesService from '../features/ConnectedDevicesService';
|
|
import SharingSession from '../features/SharingSessionService/SharingSession';
|
|
import RoomIDService from '../server/RoomIDService';
|
|
import getDeskreenGlobal from '../utils/mainProcessHelpers/getDeskreenGlobal';
|
|
import signalingServer from '../server';
|
|
|
|
const v4IPGetter = require('internal-ip').v4;
|
|
|
|
export default function initIpcMainHandlers(
|
|
mainWindow: BrowserWindow | null,
|
|
latestVersion: string,
|
|
appVersion: string
|
|
) {
|
|
ipcMain.on('client-changed-language', async (_, newLangCode) => {
|
|
i18n.changeLanguage(newLangCode);
|
|
await settings.set('appLanguage', newLangCode);
|
|
});
|
|
|
|
ipcMain.handle('get-signaling-server-port', () => {
|
|
if (mainWindow === null) return;
|
|
mainWindow.webContents.send('sending-port-from-main', signalingServer.port);
|
|
});
|
|
|
|
ipcMain.handle('get-all-displays', () => {
|
|
return screen.getAllDisplays();
|
|
});
|
|
|
|
ipcMain.handle('get-display-size-by-display-id', (_, displayID: string) => {
|
|
const display = screen.getAllDisplays().find((d: Display) => {
|
|
return `${d.id}` === displayID;
|
|
});
|
|
|
|
if (display) {
|
|
return display.size;
|
|
}
|
|
return undefined;
|
|
});
|
|
|
|
ipcMain.handle('main-window-onbeforeunload', () => {
|
|
const deskreenGlobal = getDeskreenGlobal();
|
|
deskreenGlobal.connectedDevicesService = new ConnectedDevicesService();
|
|
deskreenGlobal.roomIDService = new RoomIDService();
|
|
deskreenGlobal.sharingSessionService.sharingSessions.forEach(
|
|
(sharingSession: SharingSession) => {
|
|
sharingSession.denyConnectionForPartner();
|
|
sharingSession.destroy();
|
|
}
|
|
);
|
|
|
|
deskreenGlobal.rendererWebrtcHelpersService.helpers.forEach(
|
|
(helperWindow) => {
|
|
helperWindow.close();
|
|
}
|
|
);
|
|
|
|
deskreenGlobal.sharingSessionService.waitingForConnectionSharingSession = null;
|
|
deskreenGlobal.rendererWebrtcHelpersService.helpers.clear();
|
|
deskreenGlobal.sharingSessionService.sharingSessions.clear();
|
|
});
|
|
|
|
ipcMain.handle('get-latest-version', () => {
|
|
return latestVersion;
|
|
});
|
|
|
|
ipcMain.handle('get-current-version', () => {
|
|
return appVersion;
|
|
});
|
|
|
|
ipcMain.handle('get-local-lan-ip', async () => {
|
|
if (
|
|
process.env.RUN_MODE === 'dev' ||
|
|
process.env.NODE_ENV === 'production'
|
|
) {
|
|
const ip = await v4IPGetter();
|
|
return ip;
|
|
}
|
|
return '255.255.255.255';
|
|
});
|
|
}
|