ai-helpdesk-api / Frontend /src /hooks /useRealtimeNotifications.js
ritesh19180's picture
Upload folder using huggingface_hub
2b6d06f verified
Raw
History Blame Contribute Delete
1.66 kB
import { useEffect } from 'react';
import { supabase } from '../lib/supabaseClient';
import useAuthStore from '../store/authStore';
import useTicketStore from '../store/ticketStore';
const useTicketsRealtime = () => {
const { user, profile } = useAuthStore();
const { addTicket, updateTicket, removeTicket } = useTicketStore();
useEffect(() => {
if (!user || !profile) return;
// Only admins see the live ticket queue
const isAdmin = profile.role === 'admin' || profile.role === 'master_admin';
if (!isAdmin) return;
const channel = supabase
.channel('tickets-realtime-dashboard')
.on(
'postgres_changes',
{
event: '*',
schema: 'public',
table: 'tickets',
filter: `company_id=eq.${profile.company_id}`,
},
(payload) => {
const { eventType, new: newRecord, old: oldRecord } = payload;
if (eventType === 'INSERT') {
addTicket(newRecord);
}
if (eventType === 'UPDATE') {
updateTicket(newRecord.ticket_id, newRecord);
}
if (eventType === 'DELETE') {
removeTicket(oldRecord.ticket_id);
}
}
)
.subscribe();
return () => {
supabase.removeChannel(channel);
};
}, [user, profile, addTicket, updateTicket, removeTicket]);
};
export default useTicketsRealtime;