import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useAuthContext } from "@/contexts/AuthContext"; import firestore from "@react-native-firebase/firestore"; import { Notification } from "@/hooks/firebase/useGetNotifications"; export const useDeleteNotification = () => { const queryClient = useQueryClient(); const { user } = useAuthContext(); const notificationsKey = ["notifications", user?.uid]; return useMutation({ mutationFn: async (id: string) => { await firestore() .collection("Notifications") .doc(id) .delete(); }, onMutate: async (deletedId) => { await queryClient.cancelQueries({ queryKey: notificationsKey }); const previousNotifications = queryClient.getQueryData(notificationsKey); queryClient.setQueryData( notificationsKey, old => old?.filter(notification => notification?.id !== deletedId) ?? [] ); return { previousNotifications }; }, onError: (_err, _deletedId, context) => { if (context?.previousNotifications) { queryClient.setQueryData(notificationsKey, context.previousNotifications); } }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: notificationsKey }); } }); };