admin: added reload button to some pages in case of error

Massimo Melina committed Apr 1, 2022 at 19:12 UTC e5417b4fb11635894de56db5b780defa9c7d03b4
1 file changed +3 -2
admin/src/api.ts
+3 -2
@@ -1,16 +1,17 @@
1 // This file is part of HFS - Copyright 2021-2022, Massimo Melina <a@rejetto.com> - License https://www.gnu.org/licenses/gpl-3.0.txt
2
3 import { createElement as h, ReactElement, useCallback, useEffect, useMemo, useRef } from 'react'
4 -import { Dict, Falsy, getCookie, spinner, useStateMounted } from './misc'
4 +import { Dict, Falsy, getCookie, IconBtn, spinner, useStateMounted } from './misc'
5 import { Alert } from '@mui/material'
6 import _ from 'lodash'
7 import { state } from './state'
8 +import { Refresh } from '@mui/icons-material'
9
10 export function useApiComp<T=any>(...args: Parameters<typeof useApi>): [T | ReactElement, ()=>void] {
11 const [res, reload] = useApi<T>(...args)
12 return useMemo(() =>
13 res === undefined ? [spinner(), reload]
13 - : res && res instanceof Error ? [h(Alert, { severity: 'error' }, String(res)), reload]
14 + : res && res instanceof Error ? [ h(Alert, { severity: 'error' }, String(res), h(IconBtn, { icon: Refresh, onClick: reload, sx: { m:'-8px 0 -8px 16px' } })), reload ]
15 : [res, reload],
16 [res, reload])
17 }