@premieroctet/next-admin
Version:
Next-Admin provides a customizable and turnkey admin dashboard for applications built with Next.js and powered by the Prisma ORM. It aims to simplify the development process by providing a turnkey admin system that can be easily integrated into your proje
44 lines (43 loc) • 1.31 kB
JavaScript
"use client";
import { jsx } from "react/jsx-runtime";
import { createContext, useCallback, useContext, useEffect, useState } from "react";
import { useRouterInternal } from "../hooks/useRouterInternal.mjs";
const MessageContext = /*#__PURE__*/ createContext({
showMessage: ()=>{},
message: null,
hideMessage: ()=>{}
});
const MessageProvider = ({ children })=>{
const { query } = useRouterInternal();
const parseMessage = useCallback(()=>{
if (query.message) try {
const data = JSON.parse(query.message.replaceAll("\\", "").replaceAll(/(^")|("$)/g, ""));
if (data.type && data.message) return data;
} catch {}
return null;
}, [
query.message
]);
const [message, setMessage] = useState(parseMessage);
useEffect(()=>{
setMessage(parseMessage);
}, [
query.message
]);
const showMessage = (messageData)=>{
setMessage(messageData);
};
const hideMessage = ()=>{
setMessage(null);
};
return /*#__PURE__*/ jsx(MessageContext.Provider, {
value: {
showMessage,
message,
hideMessage
},
children: children
});
};
const useMessage = ()=>useContext(MessageContext);
export { MessageProvider, useMessage };