32 lines
911 B
TypeScript
32 lines
911 B
TypeScript
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
import { notificationService } from '@/lib/services/notification.service';
|
|
import { toast } from 'sonner';
|
|
|
|
export const notificationKeys = {
|
|
all: ['notifications'] as const,
|
|
unread: () => [...notificationKeys.all, 'unread'] as const,
|
|
};
|
|
|
|
export function useNotifications() {
|
|
return useQuery({
|
|
queryKey: notificationKeys.unread(),
|
|
queryFn: notificationService.getUnread,
|
|
refetchInterval: 60 * 1000, // Poll every 1 minute
|
|
staleTime: 30 * 1000,
|
|
});
|
|
}
|
|
|
|
export function useMarkNotificationRead() {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: notificationService.markAsRead,
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: notificationKeys.unread() });
|
|
},
|
|
onError: () => {
|
|
toast.error("Failed to mark notification as read");
|
|
}
|
|
});
|
|
}
|