import React, { useState, useCallback, useContext, createContext } from "react"; import { Alert } from "reactstrap"; const AlertContext = createContext(); export function AlertProvider(props) { const [open, setOpen] = useState(false); const [message, setMessage] = useState(); const handleClose = useCallback(() => { setOpen(false); }, [setOpen]); const handleOpen = useCallback( (message) => { setMessage(message); setOpen(true); window.setTimeout(() => { setOpen(false); }, 10000); }, [setMessage, setOpen] ); return ( <AlertContext.Provider value={[handleOpen, handleClose]}> <Alert color="info" isOpen={open} fade={true} style={{ marginBottom: "0rem" }} > {message} </Alert> {props.children} </AlertContext.Provider> ); } export function useAlert() { const context = useContext(AlertContext); if (!context) throw new Error( "`useAlert()` must be called inside an `AlertProvider` child." ); return context; }