changed poll and some UI bugs.
This commit is contained in:
1 parent
0b059aec1d
commit
2102481ed0
7 files changed
+77
-14
No files matched your search
+18
-9
@@ -36,7 +36,6 @@ export default function App() {
|
||||
const [loading, setLoading] = useState(true);
|
||||
|
||||
async function refresh() {
|
||||
setError('');
|
||||
try {
|
||||
const [healthResult, vmsResult, jobsResult, schedulesResult, nodesResult] = await Promise.allSettled([
|
||||
api.get('/health'),
|
||||
@@ -47,20 +46,20 @@ export default function App() {
|
||||
]);
|
||||
|
||||
if (healthResult.status === 'fulfilled') {
|
||||
setHealth(healthResult.value.data);
|
||||
setStableState(setHealth, healthResult.value.data);
|
||||
} else {
|
||||
setHealth(healthResult.reason.response?.data || { ok: false, checks: {} });
|
||||
setStableState(setHealth, healthResult.reason.response?.data || { ok: false, checks: {} });
|
||||
}
|
||||
|
||||
if (vmsResult.status === 'fulfilled') setVms(vmsResult.value.data);
|
||||
if (jobsResult.status === 'fulfilled') setJobs(jobsResult.value.data);
|
||||
if (schedulesResult.status === 'fulfilled') setSchedules(schedulesResult.value.data);
|
||||
if (nodesResult.status === 'fulfilled') setNodes(nodesResult.value.data);
|
||||
if (vmsResult.status === 'fulfilled') setStableState(setVms, vmsResult.value.data);
|
||||
if (jobsResult.status === 'fulfilled') setStableState(setJobs, jobsResult.value.data);
|
||||
if (schedulesResult.status === 'fulfilled') setStableState(setSchedules, schedulesResult.value.data);
|
||||
if (nodesResult.status === 'fulfilled') setStableState(setNodes, nodesResult.value.data);
|
||||
|
||||
const firstFailure = [healthResult, vmsResult, jobsResult, schedulesResult, nodesResult].find((result) => result.status === 'rejected');
|
||||
if (firstFailure) setError(errorMessage(firstFailure.reason));
|
||||
setStableState(setError, firstFailure ? errorMessage(firstFailure.reason) : '');
|
||||
} catch (requestError) {
|
||||
setError(errorMessage(requestError));
|
||||
setStableState(setError, errorMessage(requestError));
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@@ -227,6 +226,16 @@ export default function App() {
|
||||
}
|
||||
}
|
||||
|
||||
function setStableState(setter, nextValue) {
|
||||
setter((currentValue) => (
|
||||
stableStringify(currentValue) === stableStringify(nextValue) ? currentValue : nextValue
|
||||
));
|
||||
}
|
||||
|
||||
function stableStringify(value) {
|
||||
return JSON.stringify(value);
|
||||
}
|
||||
|
||||
function NavButton({ active, icon: Icon, label, onClick }) {
|
||||
return (
|
||||
<button
|
||||
|
||||
Reference in new issue
Block a user