diff --git a/src/api/tickets.ts b/src/api/tickets.ts index e17eff3..43f3aa0 100644 --- a/src/api/tickets.ts +++ b/src/api/tickets.ts @@ -11,12 +11,8 @@ export function subscribeToAllTickets({ onMessage, onError, accessToken }: { onError: (e: Event) => void; }) { const url = `${supportApiUrl}/subscribe?Authorization=${accessToken}`; - const eventSource = new ReconnectingEventSource(url); - eventSource.addEventListener("open", () => console.log(`EventSource connected with ${url}`)); - eventSource.addEventListener("close", () => console.log(`EventSource closed with ${url}`)); - eventSource.addEventListener("message", onMessage); - eventSource.addEventListener("error", onError); + const eventSource = createEventSource(onMessage, onError, url); return () => { eventSource.close(); @@ -30,12 +26,8 @@ export function subscribeToTicketMessages({ onMessage, onError, accessToken, tic onError: (e: Event) => void; }) { const url = `${supportApiUrl}/ticket?ticket=${ticketId}&Authorization=${accessToken}`; - const eventSource = new ReconnectingEventSource(url); - eventSource.addEventListener("open", () => console.log(`EventSource connected with ${url}`)); - eventSource.addEventListener("close", () => console.log(`EventSource closed with ${url}`)); - eventSource.addEventListener("message", onMessage); - eventSource.addEventListener("error", onError); + const eventSource = createEventSource(onMessage, onError, url); return () => { eventSource.close(); @@ -83,4 +75,15 @@ export async function sendTicketMessage({ body }: { useToken: true, body, }); +} + +function createEventSource(onMessage: (e: MessageEvent) => void, onError: (e: Event) => void, url: string) { + const eventSource = new ReconnectingEventSource(url); + + eventSource.addEventListener("open", () => console.log(`EventSource connected with ${url}`)); + eventSource.addEventListener("close", () => console.log(`EventSource closed with ${url}`)); + eventSource.addEventListener("message", onMessage); + eventSource.addEventListener("error", onError); + + return eventSource; } \ No newline at end of file