1
0
mirror of https://github.com/pavlobu/deskreen.git synced 2025-05-28 05:10:09 -07:00

use more Invoke in connected device list drawer

This commit is contained in:
Pavlo Buidenkov 2022-05-29 12:48:09 +02:00
parent 78318ce10b
commit f191be36c9
4 changed files with 24 additions and 14 deletions

View File

@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/ban-ts-comment */
/* eslint-disable react/destructuring-assignment */
import { remote } from 'electron';
import { remote, ipcRenderer } from 'electron';
import React, { useEffect, useState, useCallback } from 'react';
import { useTranslation } from 'react-i18next';
import {
@ -21,6 +21,7 @@ import DeviceInfoCallout from './DeviceInfoCallout';
import SharingSourcePreviewCard from './SharingSourcePreviewCard';
import isWithReactRevealAnimations from '../utils/isWithReactRevealAnimations';
import isProduction from '../utils/isProduction';
import { IpcEvents } from '../main/IpcEvents.enum';
const sharingSessionService = remote.getGlobal(
'sharingSessionService'
@ -31,17 +32,6 @@ const connectedDevicesService = remote.getGlobal(
const Fade = require('react-reveal/Fade');
const disconnectPeerAndDestroySharingSessionBySessionID = (
sharingSessionID: string
) => {
const sharingSession = sharingSessionService.sharingSessions.get(
sharingSessionID
);
sharingSession?.disconnectByHostMachineUser();
sharingSession?.destroy();
sharingSessionService.sharingSessions.delete(sharingSessionID);
};
interface ConnectedDevicesListDrawerProps {
isOpen: boolean;
handleToggle: () => void;
@ -88,13 +78,17 @@ export default function ConnectedDevicesListDrawer(
(d: Device) => d.id === id
);
if (!device) return;
disconnectPeerAndDestroySharingSessionBySessionID(device.sharingSessionID);
ipcRenderer.invoke(
IpcEvents.DisconnectPeerAndDestroySharingSessionBySessionID,
device.sharingSessionID
);
connectedDevicesService.removeDeviceByID(id);
}, []);
const handleDisconnectAll = useCallback(() => {
connectedDevicesService.devices.forEach((device: Device) => {
disconnectPeerAndDestroySharingSessionBySessionID(
ipcRenderer.invoke(
IpcEvents.DisconnectPeerAndDestroySharingSessionBySessionID,
device.sharingSessionID
);
});

View File

@ -70,6 +70,7 @@ const ScanQRStep: React.FC = () => {
setRoomID(
sharingSessionService.waitingForConnectionSharingSession.roomID
);
clearInterval(thisInterval);
}
}, 1000);

View File

@ -7,4 +7,5 @@ export enum IpcEvents {
ResetWaitingForConnectionSharingSession = 'reset-waiting-for-connection-sharing-session',
SetDeviceConnectedStatus = 'set-device-connected-status',
GetSourceDisplayIDByDesktopCapturerSourceID = 'get-source-display-id-by-desktop-capturer-source-id',
DisconnectPeerAndDestroySharingSessionBySessionID = 'disconnect-peer-and-destroy-sharing-session-by-session-id',
}

View File

@ -144,4 +144,18 @@ export default function initIpcMainHandlers(
);
}
);
ipcMain.handle(
IpcEvents.DisconnectPeerAndDestroySharingSessionBySessionID,
(_, sessionId) => {
const sharingSession = getDeskreenGlobal().sharingSessionService.sharingSessions.get(
sessionId
);
sharingSession?.disconnectByHostMachineUser();
sharingSession?.destroy();
getDeskreenGlobal().sharingSessionService.sharingSessions.delete(
sessionId
);
}
);
}