This commit is contained in:
Milan Paunovic
2024-12-15 16:46:26 +01:00
parent 70db8bdc0b
commit c411990312
25 changed files with 106 additions and 108 deletions

View File

@ -1,11 +1,12 @@
import {useMutation, useQueryClient} from "@tanstack/react-query";
import {useAuthContext} from "@/contexts/AuthContext";
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";
import { Notification } from "@/hooks/firebase/useGetNotifications";
export const useDeleteNotification = () => {
const queryClient = useQueryClient();
const {user} = useAuthContext();
const { user } = useAuthContext();
const notificationsKey = ["notifications", user?.uid];
return useMutation({
mutationFn: async (id: string) => {
@ -15,23 +16,24 @@ export const useDeleteNotification = () => {
.delete();
},
onMutate: async (deletedId) => {
await queryClient.cancelQueries(["notifications", user?.uid]);
await queryClient.cancelQueries({ queryKey: notificationsKey });
const previousNotifications = queryClient.getQueryData<Notification[]>(["notifications", user?.uid]);
const previousNotifications = queryClient.getQueryData<Notification[]>(notificationsKey);
queryClient.setQueryData<Notification[]>(["notifications", user?.uid], (old) =>
old?.filter((notification) => notification?.id! !== deletedId) ?? []
queryClient.setQueryData<Notification[]>(
notificationsKey,
old => old?.filter(notification => notification?.id !== deletedId) ?? []
);
return {previousNotifications};
return { previousNotifications };
},
onError: (_err, _deletedId, context) => {
if (context?.previousNotifications) {
queryClient.setQueryData(["notifications", user?.uid], context.previousNotifications);
queryClient.setQueryData(notificationsKey, context.previousNotifications);
}
},
onSettled: () => {
queryClient.invalidateQueries(["notifications", user?.uid]);
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: notificationsKey });
}
});
};