diff --git a/packages/admin-ui/src/components/machineActions/DiagnosticsModal.jsx b/packages/admin-ui/src/components/machineActions/DiagnosticsModal.jsx index e213384b..2d3faab1 100644 --- a/packages/admin-ui/src/components/machineActions/DiagnosticsModal.jsx +++ b/packages/admin-ui/src/components/machineActions/DiagnosticsModal.jsx @@ -1,7 +1,7 @@ import { useLazyQuery, useQuery, gql } from '@apollo/client' import { subMinutes } from 'date-fns' import FileSaver from 'file-saver' -import React, { useState, useEffect } from 'react' +import React, { useState, useEffect, useRef } from 'react' import Modal from '../Modal' import { H3, P } from '../typography' @@ -56,7 +56,7 @@ const createCsv = async ({ machineLogsCsv }) => { const DiagnosticsModal = ({ onClose, deviceId, sendAction }) => { const [state, setState] = useState(STATES.INITIAL) const [timestamp, setTimestamp] = useState(null) - let timeout = null + const timeoutRef = useRef(null) const [fetchSummary, { loading }] = useLazyQuery(MACHINE_LOGS, { onCompleted: data => createCsv(data), @@ -76,24 +76,41 @@ const DiagnosticsModal = ({ onClose, deviceId, sendAction }) => { data.machine.diagnostics.timestamp && data.machine.diagnostics.timestamp !== timestamp ) { - clearTimeout(timeout) + if (timeoutRef.current) { + clearTimeout(timeoutRef.current) + timeoutRef.current = null + } setTimestamp(data.machine.diagnostics.timestamp) setState(STATES.FILLED) stopPolling() } - }, [data, stopPolling, timeout, timestamp]) + }, [data, stopPolling, timestamp]) + + useEffect(() => { + return () => { + if (timeoutRef.current) { + clearTimeout(timeoutRef.current) + timeoutRef.current = null + } + } + }, []) const path = `/operator-data/diagnostics/${deviceId}/` - function runDiagnostics() { + const runDiagnostics = () => { + setState(STATES.RUNNING) startPolling(2000) - timeout = setTimeout(() => { + if (timeoutRef.current) { + clearTimeout(timeoutRef.current) + } + + timeoutRef.current = setTimeout(() => { setState(STATES.FAILURE) stopPolling() + timeoutRef.current = null }, 60 * 1000) - setState(STATES.RUNNING) sendAction() } @@ -140,7 +157,7 @@ const DiagnosticsModal = ({ onClose, deviceId, sendAction }) => {

Scan

Failure getting photo @@ -148,7 +165,7 @@ const DiagnosticsModal = ({ onClose, deviceId, sendAction }) => {

Front

Failure getting photo

diff --git a/packages/server/lib/routes.js b/packages/server/lib/routes.js index 4c813c0f..0f68981d 100644 --- a/packages/server/lib/routes.js +++ b/packages/server/lib/routes.js @@ -55,7 +55,7 @@ const loadRoutes = async () => { app.use(compression({ threshold: 500 })) app.use(helmet()) app.use(nocache()) - app.use(express.json({ limit: '2mb' })) + app.use(express.json({ limit: '25mb' })) morgan.token('bytesRead', (_req, res) => res.bytesRead) morgan.token('bytesWritten', (_req, res) => res.bytesWritten)