import { useState } from 'react' import PropTypes from 'prop-types' import { useDataProvider, useNotify, useTranslate } from 'react-admin' import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, TextField, } from '@material-ui/core' export const QuickConnectDialog = ({ open, onClose }) => { const translate = useTranslate() const notify = useNotify() const dataProvider = useDataProvider() const [code, setCode] = useState('') const [pending, setPending] = useState(null) const [loading, setLoading] = useState(false) const handleClose = () => { setCode('') setPending(null) onClose() } const handleError = (error) => { setPending(null) const invalid = error?.status === 404 || error?.status === 409 notify( invalid ? 'message.quickConnectInvalidCode' : 'message.quickConnectError', 'warning', ) } const run = (request, onSuccess) => { setLoading(true) request .then(({ data }) => onSuccess(data)) .catch(handleError) .finally(() => setLoading(false)) } const lookup = (event) => { event.preventDefault() run(dataProvider.lookupQuickConnect(code), setPending) } const approve = () => run(dataProvider.authorizeQuickConnect(code), (data) => { notify('message.quickConnectApproved', 'success', { app: data.appName, device: data.deviceName, }) handleClose() }) return ( {translate('menu.quickConnect.name')} {pending ? ( <> {translate('menu.quickConnect.confirm', { app: pending.appName, version: pending.appVersion, device: pending.deviceName, })} ) : (
{translate('menu.quickConnect.help')} setCode(event.target.value)} inputProps={{ inputMode: 'numeric', autoComplete: 'off' }} />
)}
) } QuickConnectDialog.propTypes = { open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, }