import * as React from "react"; import { createRandomId } from "../../common/util"; import { css } from "@emotion/css"; export type Message = { readonly id: string; readonly type: "error" | "success"; readonly text: string; }; export type AddMessage = (message: Pick) => void; export const useNotification = (): { readonly addMessage: AddMessage; readonly element: React.ReactElement; } => { const [messageList, setMessageList] = React.useState>( [] ); return { addMessage: React.useCallback((newMessage) => { setMessageList((oldMessageList) => [ ...oldMessageList, { ...newMessage, id: createRandomId() }, ]); }, []), element: (
{[...messageList] .reverse() .slice(0, 4) .map((message) => (
{message.text}
))}
), }; };