/* eslint-disable @typescript-eslint/ban-ts-comment */ import { clipboard, ipcRenderer } from 'electron'; import React, { useContext, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Button, Text, Tooltip, Position, Dialog, Classes, } from '@blueprintjs/core'; import QRCode from 'qrcode.react'; import { makeStyles, createStyles } from '@material-ui/core'; import { Row, Col } from 'react-flexbox-grid'; import { SettingsContext } from '../../containers/SettingsProvider'; import isProduction from '../../utils/isProduction'; import config from '../../api/config'; import { IpcEvents } from '../../main/IpcEvents.enum'; const { port } = config; // TODO: change port to user defined port, if it is really defined const CLIENT_VIEWER_PORT = isProduction() ? port : '3000'; const useStyles = makeStyles(() => createStyles({ smallQRCode: { border: '1px solid', borderColor: 'rgba(0,0,0,0.0)', padding: '10px', borderRadius: '10px', '&:hover': { backgroundColor: 'rgba(0,0,0,0.12)', border: '1px solid #8A9BA8', cursor: 'zoom-in', }, }, dialogQRWrapper: { backgroundColor: 'white', padding: '20px', borderRadius: '10px', }, bigQRCodeDialogRoot: { '&:hover': { cursor: 'zoom-out', }, paddingBottom: '0px', }, }) ); const ScanQRStep: React.FC = () => { const { t } = useTranslation(); const classes = useStyles(); const { isDarkTheme } = useContext(SettingsContext); const [roomID, setRoomID] = useState(''); const [LOCAL_LAN_IP, setLocalLanIP] = useState(''); useEffect(() => { const getRoomIdInterval = setInterval(async () => { const roomId = await ipcRenderer.invoke( IpcEvents.GetWaitingForConnectionSharingSessionRoomId ); if (roomId) { setRoomID(roomId); } }, 1000); const ipInterval = setInterval(async () => { const gotIP = await ipcRenderer.invoke('get-local-lan-ip'); if (gotIP) { setLocalLanIP(gotIP); } }, 1000); return () => { clearInterval(getRoomIdInterval); clearInterval(ipInterval); }; }, []); const [isQRCodeMagnified, setIsQRCodeMagnified] = useState(false); return ( <>