Refactor engine and market status fetching to use callbacks and improve error handling
This commit is contained in:
parent
5720cdb63c
commit
b0c1ea3651
@ -402,38 +402,38 @@ export default function PortfolioSection() {
|
||||
return () => window.clearInterval(interval);
|
||||
}, [refreshStatus]);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchStatus = async () => {
|
||||
try {
|
||||
const res = await apiRequest("GET", "/engine/status");
|
||||
const data = await res.json();
|
||||
setEngineStatus(data);
|
||||
} catch {
|
||||
setEngineStatus(null);
|
||||
}
|
||||
};
|
||||
|
||||
fetchStatus();
|
||||
const id = window.setInterval(fetchStatus, 5000);
|
||||
return () => window.clearInterval(id);
|
||||
const refreshEngineStatus = useCallback(async () => {
|
||||
try {
|
||||
const res = await apiRequest("GET", "/engine/status");
|
||||
const data = await res.json();
|
||||
setEngineStatus(data);
|
||||
} catch {
|
||||
setEngineStatus(null);
|
||||
}
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchMarketStatus = async () => {
|
||||
try {
|
||||
const res = await apiRequest("GET", "/market/status");
|
||||
const data = await res.json();
|
||||
setMarketStatus(data);
|
||||
} catch {
|
||||
setMarketStatus(null);
|
||||
}
|
||||
};
|
||||
|
||||
fetchMarketStatus();
|
||||
const id = window.setInterval(fetchMarketStatus, 5000);
|
||||
void refreshEngineStatus();
|
||||
const id = window.setInterval(refreshEngineStatus, 5000);
|
||||
return () => window.clearInterval(id);
|
||||
}, [refreshEngineStatus]);
|
||||
|
||||
const refreshMarketStatus = useCallback(async () => {
|
||||
try {
|
||||
const res = await apiRequest("GET", "/market/status");
|
||||
const data = await res.json();
|
||||
setMarketStatus(data);
|
||||
} catch {
|
||||
setMarketStatus(null);
|
||||
}
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
void refreshMarketStatus();
|
||||
const id = window.setInterval(refreshMarketStatus, 5000);
|
||||
return () => window.clearInterval(id);
|
||||
}, [refreshMarketStatus]);
|
||||
|
||||
useEffect(() => {
|
||||
if (prefersReducedMotion) {
|
||||
setIsVisible(true);
|
||||
@ -800,10 +800,21 @@ export default function PortfolioSection() {
|
||||
description: result?.message || result?.status || "Unable to start strategy.",
|
||||
});
|
||||
}
|
||||
} catch (error: any) {
|
||||
const message = error?.message || "Unable to start strategy.";
|
||||
if (String(message).includes("401:")) {
|
||||
setLoginPromptOpen(true);
|
||||
}
|
||||
toast({
|
||||
title: "Start failed",
|
||||
description: message,
|
||||
});
|
||||
} finally {
|
||||
setIsStarting(false);
|
||||
await Promise.allSettled([
|
||||
refreshStatus(),
|
||||
refreshEngineStatus(),
|
||||
refreshMarketStatus(),
|
||||
refreshBrokerData({ includeEquityCurve: true }),
|
||||
]);
|
||||
}
|
||||
@ -859,10 +870,21 @@ export default function PortfolioSection() {
|
||||
description: result?.message || result?.status || "Unable to resume strategy.",
|
||||
});
|
||||
}
|
||||
} catch (error: any) {
|
||||
const message = error?.message || "Unable to resume strategy.";
|
||||
if (String(message).includes("401:")) {
|
||||
setLoginPromptOpen(true);
|
||||
}
|
||||
toast({
|
||||
title: "Resume failed",
|
||||
description: message,
|
||||
});
|
||||
} finally {
|
||||
setIsResuming(false);
|
||||
await Promise.allSettled([
|
||||
refreshStatus(),
|
||||
refreshEngineStatus(),
|
||||
refreshMarketStatus(),
|
||||
refreshBrokerData({ includeEquityCurve: true }),
|
||||
]);
|
||||
}
|
||||
@ -873,10 +895,17 @@ export default function PortfolioSection() {
|
||||
try {
|
||||
await stopStrategy();
|
||||
setFreshStartRequested(false);
|
||||
} catch (error: any) {
|
||||
toast({
|
||||
title: "Stop failed",
|
||||
description: error?.message || "Unable to stop strategy.",
|
||||
});
|
||||
} finally {
|
||||
setIsStopping(false);
|
||||
await Promise.allSettled([
|
||||
refreshStatus(),
|
||||
refreshEngineStatus(),
|
||||
refreshMarketStatus(),
|
||||
refreshBrokerData({ includeEquityCurve: true }),
|
||||
]);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user