fix: admin/logs: avoid endless spinner on empty log

Massimo Melina committed Aug 18, 2022 at 23:48 UTC 21181ffd2389faa89b1810a0d8c6b612b3f695e6
2 files changed +6 -4
admin/src/MonitorPage.ts
+1 -2
@@ -4,9 +4,8 @@ import _ from "lodash"
4 import { createElement as h, useMemo, Fragment, useState } from "react"
5 import { apiCall, useApiEvents, useApiEx, useApiList } from "./api"
6 import { PauseCircle, PlayCircle, Delete, Lock, Block, FolderZip } from '@mui/icons-material'
7 -import { Box, Chip, ChipProps } from '@mui/material'
7 +import { Alert, Box, Chip, ChipProps } from '@mui/material'
8 import { DataGrid } from "@mui/x-data-grid"
9 -import { Alert } from '@mui/material'
9 import { formatBytes, IconBtn, iconTooltip, manipulateConfig, useBreakpoint } from "./misc"
10 import { Field, SelectField } from '@hfs/mui-grid-form'
11 import { GridColumns } from '@mui/x-data-grid/models/colDef/gridColDef'
server/src/adminApis.ts
+5 -2
@@ -98,9 +98,12 @@ export const adminApis: ApiHandlers = {
98 return list.error(404, true)
99 const input = createReadStream(logger.path)
100 input.on('error', async (e: any) => {
101 - if (e.code !== 'ENOENT') // ignore ENOENT, consider it an empty log
102 - return list.error(e.code || e.message)
101 + if (e.code === 'ENOENT') // ignore ENOENT, consider it an empty log
102 + return list.ready()
103 + list.error(e.code || e.message)
104 })
105 + input.on('end', () =>
106 + list.ready())
107 input.on('ready', () => {
108 readline.createInterface({ input }).on('line', line => {
109 if (ctx.aborted)