saas_app/src/app/_response/ResponseContext.tsx

38 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;
error?: string;
detail?: string;
}
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;
};