import {useCreateFeedback} from "@/hooks/firebase/useCreateFeedback"; import {useDeleteFeedback} from "@/hooks/firebase/useDeleteFeedback"; import {useGetFeedbacks} from "@/hooks/firebase/useGetFeedbacks"; import {useUpdateFeedback} from "@/hooks/firebase/useUpdateFeedback"; import {createContext, useContext, useState} from "react"; export interface IFeedback { id: number; title: string; text: string; } interface IFeedbackContext { feedbacks: IFeedback[] | undefined; isAddingFeedback: boolean; setIsAddingFeedback: (value: boolean) => void; addFeedback: (BrainDump: IFeedback) => void; updateFeedback: (id: number, changes: Partial) => void; deleteFeedback: (id: number) => void; } const FeedbackContext = createContext(undefined); export const FeedbackProvider: React.FC<{ children: React.ReactNode }> = ({ children, }) => { const { mutateAsync: createFeedback, } = useCreateFeedback(); const {data: feedbacks} = useGetFeedbacks(); const {mutate: deleteFeedbackMutate} = useDeleteFeedback(); const {mutate: updateFeedbackMutate} = useUpdateFeedback(); const [isAddingFeedback, setIsAddingFeedback] = useState(false); const addFeedback = (Feedback: IFeedback) => { createFeedback({title: Feedback.title, text: Feedback.text}); }; const updateFeedback = (id: number, changes: Partial) => { updateFeedbackMutate( { id: id, changes: changes, }, { onSuccess: (data) => { console.log("Feedback updated successfully", data); }, onError: (error) => { console.error("Failed to update feedback:", error); }, } ); }; const deleteFeedback = (id: number) => { deleteFeedbackMutate(id.toString(), { onSuccess: () => { console.log("Feedback deleted successfully"); }, onError: (error) => { console.error("Failed to delete feedback:", error); }, }); }; return ( {children} ); }; export const useFeedbackContext = () => useContext(FeedbackContext)!;