import { IconButton, Tooltip } from "@mui/material"; import { useAlert } from "../hooks/providers/AlertDialogProvider"; import { useConfirm } from "../hooks/providers/ConfirmDialogProvider"; export function StateActionButton(p: { currState: S; cond: S[]; icon: React.ReactElement; tooltip: string; confirmMessage?: string; performAction: () => Promise; onExecuted: () => void; }): React.ReactElement { const confirm = useConfirm(); const alert = useAlert(); if (!p.cond.includes(p.currState)) return <>; const performAction = async () => { try { if (p.confirmMessage && !(await confirm(p.confirmMessage))) return; await p.performAction(); p.onExecuted(); } catch (e) { console.error(e); alert(`Failed to perform action! ${e}`); } }; return ( {p.icon} ); }