// // Copyright 2020 DxOS.org // import React, { useContext } from 'react'; import { useQuery } from '@apollo/react-hooks'; import { ConsoleContext, useQueryStatusReducer } from '../hooks'; import LOGS from '../gql/logs.graphql'; import Log from './Log'; const MAX_LINES = 1000; const logBuffer = []; const LogPoller = ({ service }) => { const { config } = useContext(ConsoleContext); const data = useQueryStatusReducer(useQuery(LOGS, { pollInterval: config.api.intervalLog, variables: { service, incremental: logBuffer.length !== 0 } })); if (!data) { return null; } const { incremental, lines } = JSON.parse(data.logs.json); if (!incremental && lines.length) { logBuffer.length = 0; } logBuffer.push(...lines); if (logBuffer.length > MAX_LINES) { logBuffer.splice(0, logBuffer.length - MAX_LINES); } return ( ); }; export default LogPoller;