saas_app/src/app/_response/ResponseContext.tsx

36 lines
1.1 KiB
TypeScript

'use client';
import React, { createContext, useContext, useState, ReactNode } from 'react';
interface ResponseState {
message: string;
type: 'toast' | 'modal' | 'alert' | null;
status: number;
}
interface ResponseContextProps {
response: ResponseState;
setResponse: (value: ResponseState) => void;
clearResponse: () => void;
}
const ResponseContext = createContext<ResponseContextProps | undefined>(undefined);
export const ResponseProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
const [response, setResponseState] = useState<ResponseState>({ message: '', type: null, status : 0});
const setResponse = (value: ResponseState) => setResponseState(value);
const clearResponse = () => setResponseState({ message: '', type: null, status : 0});
return (
<ResponseContext.Provider value={{ response, setResponse, clearResponse }}>
{children}
</ResponseContext.Provider>
);
};
export const useResponse = () => {
const context = useContext(ResponseContext);
if (!context) throw new Error('useResponse must be used within ResponseProvider');
return context;
};