2023-04-20 15:42:18 +00:00
|
|
|
import makeRequest from "@root/kitUI/makeRequest";
|
2023-04-18 14:30:47 +00:00
|
|
|
import {
|
|
|
|
GetMessagesRequest,
|
|
|
|
GetMessagesResponse,
|
|
|
|
GetTicketsRequest,
|
|
|
|
GetTicketsResponse,
|
|
|
|
SendTicketMessageRequest,
|
|
|
|
} from "@root/model/ticket";
|
|
|
|
import { authStore } from "@root/stores/auth";
|
2023-03-20 15:27:01 +00:00
|
|
|
import ReconnectingEventSource from "reconnecting-eventsource";
|
|
|
|
|
2023-04-20 15:42:18 +00:00
|
|
|
// const { makeRequest } = authStore();
|
|
|
|
|
2023-03-21 12:58:06 +00:00
|
|
|
const supportApiUrl = "https://admin.pena.digital/heruvym";
|
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
export function subscribeToAllTickets({
|
|
|
|
onMessage,
|
|
|
|
onError,
|
|
|
|
accessToken,
|
|
|
|
}: {
|
|
|
|
accessToken: string;
|
|
|
|
onMessage: (e: MessageEvent) => void;
|
|
|
|
onError: (e: Event) => void;
|
2023-03-20 15:27:01 +00:00
|
|
|
}) {
|
2023-04-18 14:30:47 +00:00
|
|
|
const url = `${supportApiUrl}/subscribe?Authorization=${accessToken}`;
|
2023-03-21 12:58:06 +00:00
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
const eventSource = createEventSource(onMessage, onError, url);
|
2023-03-20 15:27:01 +00:00
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
return () => {
|
|
|
|
eventSource.close();
|
|
|
|
};
|
2023-03-21 12:58:06 +00:00
|
|
|
}
|
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
export function subscribeToTicketMessages({
|
|
|
|
onMessage,
|
|
|
|
onError,
|
|
|
|
accessToken,
|
|
|
|
ticketId,
|
|
|
|
}: {
|
|
|
|
accessToken: string;
|
|
|
|
ticketId: string;
|
|
|
|
onMessage: (e: MessageEvent) => void;
|
|
|
|
onError: (e: Event) => void;
|
2023-03-21 12:58:06 +00:00
|
|
|
}) {
|
2023-04-18 14:30:47 +00:00
|
|
|
const url = `${supportApiUrl}/ticket?ticket=${ticketId}&Authorization=${accessToken}`;
|
2023-03-20 15:27:01 +00:00
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
const eventSource = createEventSource(onMessage, onError, url);
|
2023-03-20 15:27:01 +00:00
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
return () => {
|
|
|
|
eventSource.close();
|
|
|
|
};
|
2023-03-21 12:58:06 +00:00
|
|
|
}
|
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
export async function getTickets({
|
|
|
|
body,
|
|
|
|
signal,
|
|
|
|
}: {
|
|
|
|
body: GetTicketsRequest;
|
|
|
|
signal: AbortSignal;
|
2023-03-21 12:58:06 +00:00
|
|
|
}): Promise<GetTicketsResponse> {
|
2023-04-18 14:30:47 +00:00
|
|
|
return makeRequest({
|
|
|
|
url: `${supportApiUrl}/getTickets`,
|
|
|
|
method: "POST",
|
|
|
|
useToken: true,
|
|
|
|
body,
|
|
|
|
signal,
|
|
|
|
}).then((response) => {
|
|
|
|
const result = (response as any).data as GetTicketsResponse;
|
|
|
|
return result;
|
|
|
|
});
|
2023-03-21 12:58:06 +00:00
|
|
|
}
|
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
export async function getTicketMessages({
|
|
|
|
body,
|
|
|
|
signal,
|
|
|
|
}: {
|
|
|
|
body: GetMessagesRequest;
|
|
|
|
signal: AbortSignal;
|
2023-03-21 12:58:06 +00:00
|
|
|
}): Promise<GetMessagesResponse> {
|
2023-04-18 14:30:47 +00:00
|
|
|
return makeRequest({
|
|
|
|
url: `${supportApiUrl}/getMessages`,
|
|
|
|
method: "POST",
|
|
|
|
useToken: true,
|
|
|
|
body,
|
|
|
|
signal,
|
|
|
|
}).then((response) => {
|
|
|
|
const result = (response as any).data as GetMessagesResponse;
|
|
|
|
return result;
|
|
|
|
});
|
2023-03-21 12:58:06 +00:00
|
|
|
}
|
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
export async function sendTicketMessage({ body }: { body: SendTicketMessageRequest }) {
|
|
|
|
return makeRequest({
|
|
|
|
url: `${supportApiUrl}/send`,
|
|
|
|
method: "POST",
|
|
|
|
useToken: true,
|
|
|
|
body,
|
|
|
|
});
|
2023-03-29 14:17:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function createEventSource(onMessage: (e: MessageEvent) => void, onError: (e: Event) => void, url: string) {
|
2023-04-18 14:30:47 +00:00
|
|
|
const eventSource = new ReconnectingEventSource(url);
|
2023-03-29 14:17:00 +00:00
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
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);
|
2023-03-29 14:17:00 +00:00
|
|
|
|
2023-04-18 14:30:47 +00:00
|
|
|
return eventSource;
|
|
|
|
}
|