27 lines
609 B
TypeScript
27 lines
609 B
TypeScript
import { useContext } from "react";
|
|
import { PromptContext } from "../providers/prompt-provider";
|
|
|
|
export const usePrompt = () => {
|
|
const { message, resolve, setMessage, setResolve } =
|
|
useContext(PromptContext);
|
|
|
|
const prompt = (message: string) => {
|
|
setMessage(message);
|
|
return new Promise<string>((resolve) => {
|
|
setResolve(() => resolve);
|
|
});
|
|
};
|
|
|
|
const onSubmit = (value: string) => {
|
|
resolve?.(value);
|
|
setMessage("");
|
|
};
|
|
|
|
const onCancel = () => {
|
|
resolve?.("");
|
|
setMessage("");
|
|
};
|
|
|
|
return { message, isOpen: !!message, prompt, onSubmit, onCancel };
|
|
};
|