fix: prevent multiple run triggers from button clicks
- add isTriggering state to Dashboard - disable button immediately upon click - update isLoading prop to include trigger state
This commit is contained in:
parent
7dd7a5c0b6
commit
2116c14d07
|
|
@ -26,12 +26,16 @@ const API_BASE = 'http://127.0.0.1:8088/api';
|
||||||
|
|
||||||
export const Dashboard: React.FC = () => {
|
export const Dashboard: React.FC = () => {
|
||||||
const [activeRunId, setActiveRunId] = useState<string | null>(null);
|
const [activeRunId, setActiveRunId] = useState<string | null>(null);
|
||||||
|
const [isTriggering, setIsTriggering] = useState(false);
|
||||||
const [portfolioId, setPortfolioId] = useState<string>("main_portfolio");
|
const [portfolioId, setPortfolioId] = useState<string>("main_portfolio");
|
||||||
const { events, status, clearEvents } = useAgentStream(activeRunId);
|
const { events, status, clearEvents } = useAgentStream(activeRunId);
|
||||||
const { isOpen, onOpen, onClose } = useDisclosure();
|
const { isOpen, onOpen, onClose } = useDisclosure();
|
||||||
const [selectedNode, setSelectedNode] = useState<any>(null);
|
const [selectedNode, setSelectedNode] = useState<any>(null);
|
||||||
|
|
||||||
const startRun = async (type: string) => {
|
const startRun = async (type: string) => {
|
||||||
|
if (isTriggering || status === 'streaming' || status === 'connecting') return;
|
||||||
|
|
||||||
|
setIsTriggering(true);
|
||||||
try {
|
try {
|
||||||
clearEvents();
|
clearEvents();
|
||||||
const res = await axios.post(`${API_BASE}/run/${type}`, {
|
const res = await axios.post(`${API_BASE}/run/${type}`, {
|
||||||
|
|
@ -41,6 +45,8 @@ export const Dashboard: React.FC = () => {
|
||||||
setActiveRunId(res.data.run_id);
|
setActiveRunId(res.data.run_id);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Failed to start run:", err);
|
console.error("Failed to start run:", err);
|
||||||
|
} finally {
|
||||||
|
setIsTriggering(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -73,7 +79,7 @@ export const Dashboard: React.FC = () => {
|
||||||
colorScheme="cyan"
|
colorScheme="cyan"
|
||||||
variant="solid"
|
variant="solid"
|
||||||
onClick={() => startRun('scan')}
|
onClick={() => startRun('scan')}
|
||||||
isLoading={status === 'connecting' || status === 'streaming'}
|
isLoading={isTriggering || status === 'connecting' || status === 'streaming'}
|
||||||
>
|
>
|
||||||
Start Market Scan
|
Start Market Scan
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue