import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, } from "@mui/material"; import React, { PropsWithChildren } from "react"; type AlertContext = (message: string, title?: string) => Promise; const AlertContextK = React.createContext(null); export function AlertDialogProvider(p: PropsWithChildren): React.ReactElement { const [open, setOpen] = React.useState(false); const [title, setTitle] = React.useState(undefined); const [message, setMessage] = React.useState(""); const cb = React.useRef void)>(null); const handleClose = () => { setOpen(false); if (cb.current !== null) cb.current(); cb.current = null; }; const hook: AlertContext = (message, title) => { setTitle(title); setMessage(message); setOpen(true); return new Promise((res) => { cb.current = res; }); }; return ( <> {p.children} {title && {title}} {message} ); } export function useAlert(): AlertContext { return React.useContext(AlertContextK)!; }