ai-helpdesk-api / Frontend /src /utils /ticketRealtimeReducer.js
ritesh19180's picture
Upload folder using huggingface_hub
5f7f1b3 verified
Raw
History Blame Contribute Delete
1.21 kB
export const getTicketRecordId = (ticket) => ticket?.id ?? ticket?.ticket_id ?? null;
const defaultShouldInclude = () => true;
export const applyTicketRealtimePayload = (
tickets,
payload,
{ shouldInclude = defaultShouldInclude } = {},
) => {
const currentTickets = Array.isArray(tickets) ? tickets : [];
const eventType = payload?.eventType;
const nextTicket = payload?.new;
const oldTicket = payload?.old;
const targetTicket = nextTicket || oldTicket;
const targetId = getTicketRecordId(targetTicket);
if (!eventType || !targetId) return currentTickets;
if (eventType === 'DELETE') {
return currentTickets.filter((ticket) => getTicketRecordId(ticket) !== targetId);
}
if (!nextTicket || !shouldInclude(nextTicket)) {
return currentTickets.filter((ticket) => getTicketRecordId(ticket) !== targetId);
}
const exists = currentTickets.some((ticket) => getTicketRecordId(ticket) === targetId);
if (!exists) {
return [nextTicket, ...currentTickets];
}
return currentTickets.map((ticket) => (
getTicketRecordId(ticket) === targetId
? { ...ticket, ...nextTicket }
: ticket
));
};