admin/logs: load logs only at first tab opening instead of all together
Massimo Melina committed
May 18, 2024 at 19:03 UTC
c110df34aa19891d81ea9317e1008d0071f16170
1 file changed
+6
-4
admin/src/LogsPage.ts
+6
-4
@@ -1,6 +1,6 @@
1
// This file is part of HFS - Copyright 2021-2023, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
2
3
-import { createElement as h, Fragment, ReactNode, useMemo, useState } from 'react';
3
+import { createElement as h, Fragment, ReactNode, useEffect, useMemo, useState } from 'react';
4
import { Box, Tab, Tabs } from '@mui/material'
5
import { API_URL, useApi, useApiList } from './api'
6
import { DataTable } from './DataTable'
@@ -89,7 +89,7 @@ function LogFile({ file, addToFooter, hidden }: { hidden?: boolean, file: string
89
const { pause, pauseButton } = usePauseButton()
90
const [showApi, showApiButton] = useToggleButton("Show APIs", "Hide APIs", v => ({
91
icon: SmartToy,
92
- sx: { rotate: v ? '0deg' : '180deg' },
92
+ sx: { rotate: v ? 0 : '180deg' },
93
disabled: file === 'console',
94
}), true)
95
const [totalSize, setTotalSize] = useState(NaN)
@@ -97,7 +97,9 @@ function LogFile({ file, addToFooter, hidden }: { hidden?: boolean, file: string
97
const [skipped, setSkipped] = useState(0)
98
const MAX = 2**20
99
const invert = true
100
- useApi('get_log_file', { file, range: limited || !skipped ? -MAX : `0-${skipped}` }, {
100
+ const [firstSight, setFirstSight] = useState(!hidden)
101
+ useEffect(() => setFirstSight(x => x || !hidden), [hidden])
102
+ useApi(firstSight && 'get_log_file', { file, range: limited || !skipped ? -MAX : `0-${skipped}` }, {
103
skipParse: true, skipLog: true,
104
onResponse(res, body) {
105
const lines = body.split('\n')
@@ -118,7 +120,7 @@ function LogFile({ file, addToFooter, hidden }: { hidden?: boolean, file: string
120
setList(x => [...x, ...treated])
121
}
122
})
121
- const { list, setList, error, connecting } = useApiList('get_log', { file }, { invert, pause, map: enhanceLogLine })
123
+ const { list, setList, error, connecting } = useApiList(firstSight && 'get_log', { file }, { invert, pause, map: enhanceLogLine })
124
const tsColumn: GridColDef = {
125
field: 'ts',
126
headerName: "Timestamp",