import React, { useEffect, useState } from 'react'; import { ipcRenderer } from 'electron'; import { Button, Text } from '@blueprintjs/core'; import { useTranslation } from 'react-i18next'; import { TFunction } from 'i18next'; import { Col, Row } from 'react-flexbox-grid'; import ScanQRStep from './ScanQRStep'; import ChooseAppOrScreeenStep from './ChooseAppOrScreeenStep'; import ConfirmStep from './ConfirmStep'; import { IpcEvents } from '../../main/IpcEvents.enum'; interface IntermediateStepProps { activeStep: number; steps: string[]; handleNext: () => void; handleBack: () => void; handleNextEntireScreen: () => void; handleNextApplicationWindow: () => void; resetPendingConnectionDevice: () => void; resetUserAllowedConnection: () => void; } function getStepContent( t: TFunction, stepIndex: number, handleNextEntireScreen: () => void, handleNextApplicationWindow: () => void, device: Device ) { switch (stepIndex) { case 0: return ; case 1: return ( <>
{t('Choose Entire Screen or App window you want to share')}
); case 2: return ; default: return 'Unknown stepIndex'; } } function isConfirmStep(activeStep: number, steps: string[]) { return activeStep === steps.length - 1; } export default function IntermediateStep(props: IntermediateStepProps) { const { t } = useTranslation(); const [pendingConnectionDevice, setPendingConnectionDevice] = useState(); const { activeStep, steps, handleNext, handleBack, handleNextEntireScreen, handleNextApplicationWindow, resetPendingConnectionDevice, resetUserAllowedConnection, } = props; useEffect(() => { // eslint-disable-next-line promise/always-return ipcRenderer .invoke(IpcEvents.GetPendingConnectionDevice) // eslint-disable-next-line promise/always-return .then((device) => { setPendingConnectionDevice(device); }) .catch((e) => console.error(e)); }, []); return ( {pendingConnectionDevice && getStepContent( t, activeStep, handleNextEntireScreen, handleNextApplicationWindow, pendingConnectionDevice )} { // eslint-disable-next-line no-nested-ternary process.env.NODE_ENV === 'production' && process.env.RUN_MODE !== 'dev' && process.env.RUN_MODE !== 'test' ? ( <> ) : activeStep === 0 ? ( // eslint-disable-next-line react/jsx-indent ) : ( <> ) } {activeStep !== 0 ? ( ) : ( <> )}