1
0
mirror of https://github.com/pavlobu/deskreen.git synced 2025-05-31 23:00: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 @typescript-eslint/ban-ts-comment */
/* eslint-disable react/destructuring-assignment */ /* eslint-disable react/destructuring-assignment */
import { remote } from 'electron'; import { remote, ipcRenderer } from 'electron';
import React, { useEffect, useState, useCallback } from 'react'; import React, { useEffect, useState, useCallback } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { import {
@ -21,6 +21,7 @@ import DeviceInfoCallout from './DeviceInfoCallout';
import SharingSourcePreviewCard from './SharingSourcePreviewCard'; import SharingSourcePreviewCard from './SharingSourcePreviewCard';
import isWithReactRevealAnimations from '../utils/isWithReactRevealAnimations'; import isWithReactRevealAnimations from '../utils/isWithReactRevealAnimations';
import isProduction from '../utils/isProduction'; import isProduction from '../utils/isProduction';
import { IpcEvents } from '../main/IpcEvents.enum';
const sharingSessionService = remote.getGlobal( const sharingSessionService = remote.getGlobal(
'sharingSessionService' 'sharingSessionService'
@ -31,17 +32,6 @@ const connectedDevicesService = remote.getGlobal(
const Fade = require('react-reveal/Fade'); 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 { interface ConnectedDevicesListDrawerProps {
isOpen: boolean; isOpen: boolean;
handleToggle: () => void; handleToggle: () => void;
@ -88,13 +78,17 @@ export default function ConnectedDevicesListDrawer(
(d: Device) => d.id === id (d: Device) => d.id === id
); );
if (!device) return; if (!device) return;
disconnectPeerAndDestroySharingSessionBySessionID(device.sharingSessionID); ipcRenderer.invoke(
IpcEvents.DisconnectPeerAndDestroySharingSessionBySessionID,
device.sharingSessionID
);
connectedDevicesService.removeDeviceByID(id); connectedDevicesService.removeDeviceByID(id);
}, []); }, []);
const handleDisconnectAll = useCallback(() => { const handleDisconnectAll = useCallback(() => {
connectedDevicesService.devices.forEach((device: Device) => { connectedDevicesService.devices.forEach((device: Device) => {
disconnectPeerAndDestroySharingSessionBySessionID( ipcRenderer.invoke(
IpcEvents.DisconnectPeerAndDestroySharingSessionBySessionID,
device.sharingSessionID device.sharingSessionID
); );
}); });

View File

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

View File

@ -7,4 +7,5 @@ export enum IpcEvents {
ResetWaitingForConnectionSharingSession = 'reset-waiting-for-connection-sharing-session', ResetWaitingForConnectionSharingSession = 'reset-waiting-for-connection-sharing-session',
SetDeviceConnectedStatus = 'set-device-connected-status', SetDeviceConnectedStatus = 'set-device-connected-status',
GetSourceDisplayIDByDesktopCapturerSourceID = 'get-source-display-id-by-desktop-capturer-source-id', 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
);
}
);
} }