import DangerMessage from "@/components/message/DangerMessage"; import SuccessMessage from "@/components/message/SuccessMessage"; import Modal from "@/components/modal/Modal"; import ModalBody from "@/components/modal/ModalBody"; import { useEffect, useRef, useState } from "react"; import { TimedModalProviderContext } from "../TimedModalProvider"; export function TimedModalProvider({ children }:{ children: React.ReactNode; }){ const [ display, setDisplay ] = useState(false); const [ messages, setMessages ] = useState([]); const messagesRef = useRef(messages); messagesRef.current = messages; useEffect(() => { if(messages.length > 0){ setDisplay(true); } else{ setDisplay(false); } }, [ messages ]); const addMessage = (message: React.ReactNode, timeout: number) => { setMessages([...messages, message]); setTimeout(() => { setMessages(messagesRef.current.filter((m) => m !== message)); }, timeout); } const addSuccessMessage = (message: string) => { addMessage({message}, 5000); } const addErrorMessage = (message: string) => { addMessage({message}, 5000); } const currentContext = { addMessage, addSuccessMessage, addErrorMessage } return (
{ messages.map((message, index) => (
{message}
)) }
{children}
); }