add api functions

This commit is contained in:
nflnkr 2023-03-21 15:58:06 +03:00
parent f437147353
commit f41ada299b

@ -1,14 +1,16 @@
import makeRequest from "@root/kitUI/makeRequest";
import { GetMessagesRequest, GetMessagesResponse, GetTicketsRequest, GetTicketsResponse, SendTicketMessageRequest } from "@root/model/ticket";
import ReconnectingEventSource from "reconnecting-eventsource";
const supportApiUrl = "https://admin.pena.digital/heruvym";
export function subscribeToAllTickets({ onMessage, onError, accessToken }: {
accessToken: string;
onMessage: (e: MessageEvent) => void;
onError: (e: Event) => void;
}) {
if (!accessToken) throw new Error("Trying to subscribe to SSE without access token");
const url = `https://admin.pena.digital/heruvym/subscribe?Authorization=${accessToken}`;
const url = `${supportApiUrl}/subscribe?Authorization=${accessToken}`;
const eventSource = new ReconnectingEventSource(url);
eventSource.addEventListener("open", () => console.log(`EventSource connected with ${url}`));
@ -19,4 +21,68 @@ export function subscribeToAllTickets({ onMessage, onError, accessToken }: {
return () => {
eventSource.close();
};
}
export function subscribeToTicketMessages({ onMessage, onError, accessToken, ticketId }: {
accessToken: string;
ticketId: string;
onMessage: (e: MessageEvent) => void;
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);
return () => {
eventSource.close();
};
}
export async function getTickets({ body, signal }: {
body: GetTicketsRequest;
signal: AbortSignal;
}): Promise<GetTicketsResponse> {
return makeRequest({
url: `${supportApiUrl}/getTickets`,
method: "POST",
useToken: true,
body,
signal,
}).then(response => {
const result = (response as any).data as GetTicketsResponse;
console.log("GetTicketsResponse", result);
return result;
});
}
export async function getTicketMessages({ body, signal }: {
body: GetMessagesRequest;
signal: AbortSignal;
}): Promise<GetMessagesResponse> {
return makeRequest({
url: `${supportApiUrl}/getMessages`,
method: "POST",
useToken: true,
body,
signal,
}).then(response => {
const result = (response as any).data as GetMessagesResponse;
console.log("GetMessagesResponse", result);
return result;
});
}
export async function sendTicketMessage({ body }: {
body: SendTicketMessageRequest;
}) {
return makeRequest({
url: `${supportApiUrl}/send`,
method: "POST",
useToken: true,
body,
});
}