import { useMutation } from '@apollo/react-hooks' import { Dialog, DialogContent } from '@material-ui/core' import { makeStyles } from '@material-ui/core/styles' import { gql } from 'apollo-boost' import classnames from 'classnames' import moment from 'moment' import React, { useState } from 'react' import { H4 } from 'src/components/typography' import { DialogTitle, ConfirmDialog } from '../../components/ConfirmDialog' import { Status } from '../../components/Status' import ActionButton from '../../components/buttons/ActionButton' import { ReactComponent as DownloadReversedIcon } from '../../styling/icons/button/download/white.svg' import { ReactComponent as DownloadIcon } from '../../styling/icons/button/download/zodiac.svg' import { ReactComponent as RebootReversedIcon } from '../../styling/icons/button/reboot/white.svg' import { ReactComponent as RebootIcon } from '../../styling/icons/button/reboot/zodiac.svg' import { ReactComponent as ShutdownReversedIcon } from '../../styling/icons/button/shut down/white.svg' import { ReactComponent as ShutdownIcon } from '../../styling/icons/button/shut down/zodiac.svg' import { ReactComponent as UnpairReversedIcon } from '../../styling/icons/button/unpair/white.svg' import { ReactComponent as UnpairIcon } from '../../styling/icons/button/unpair/zodiac.svg' import { zircon } from '../../styling/variables' import { detailsRowStyles, labelStyles } from '../Transactions/Transactions.styles' const MACHINE_ACTION = gql` mutation MachineAction($deviceId: ID!, $action: MachineAction!) { machineAction(deviceId: $deviceId, action: $action) { deviceId } } ` const colDivider = { background: zircon, width: 2 } const inlineChip = { marginInlineEnd: '0.25em' } const useLStyles = makeStyles(labelStyles) const Label = ({ children }) => { const classes = useLStyles() return
{children}
} const useMDStyles = makeStyles({ ...detailsRowStyles, colDivider, inlineChip }) const MachineDetailsRow = ({ it: machine }) => { const [errorDialog, setErrorDialog] = useState(false) const [dialogOpen, setOpen] = useState(false) const [actionMessage, setActionMessage] = useState(null) const classes = useMDStyles() const unpairDialog = () => setOpen(true) const [machineAction, { loading }] = useMutation(MACHINE_ACTION, { onError: ({ graphQLErrors, message }) => { const errorMessage = graphQLErrors[0] ? graphQLErrors[0].message : message setActionMessage(errorMessage) setErrorDialog(true) } }) return ( <> setErrorDialog(false)}>

Error

{actionMessage}
{machine.statuses.map((status, index) => ( ))}
{machine.statuses.map((...[, index]) => ( ))}
{machine.machineModel}
{machine.machineLocation}
{moment(machine.pairedAt).format('YYYY-MM-DD HH:mm:ss')}
{machine.softwareVersion && ( {machine.softwareVersion} )} Update
{machine.printer || 'unknown'}
Unpair { setOpen(false) machineAction({ variables: { deviceId: machine.deviceId, action: 'unpair' } }) }} onDissmised={() => { setOpen(false) }} /> { machineAction({ variables: { deviceId: machine.deviceId, action: 'reboot' } }) }}> Reboot { machineAction({ variables: { deviceId: machine.deviceId, action: 'shutdown' } }) }}> Shutdown
) } export default MachineDetailsRow