import React, { PropsWithChildren } from "react"; import { NewCalendarURL } from "../../../api/accommodations/AccommodationsCalendarURLApi"; import { CreateAccommodationCalendarURLDialog } from "../../../dialogs/accommodations/CreateAccommodationCalendarURLDialog"; type DialogContext = () => Promise; const DialogContextK = React.createContext(null); export function CreateAccommodationCalendarURLDialogProvider( p: PropsWithChildren ): React.ReactElement { const [open, setOpen] = React.useState(false); const cb = React.useRef void)>( null ); const handleClose = (res?: NewCalendarURL) => { setOpen(false); if (cb.current !== null) cb.current(res); cb.current = null; }; const hook: DialogContext = () => { setOpen(true); return new Promise((res) => { cb.current = res; }); }; return ( <> {p.children} {open && ( )} ); } export function useCreateAccommodationCalendarURL(): DialogContext { return React.useContext(DialogContextK)!; }