54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
|
|
import { baseUrl } from "../config/baseUrl";
|
|
import { RootState } from "../config/store";
|
|
|
|
export type CreateQueueRequest = {
|
|
name: string;
|
|
description: string | null;
|
|
};
|
|
|
|
export type Queue = {
|
|
id: string;
|
|
name: string;
|
|
description: string | null;
|
|
};
|
|
|
|
export const QueueApi = createApi({
|
|
reducerPath: "QueueApi",
|
|
baseQuery: fetchBaseQuery({
|
|
baseUrl: `${baseUrl}/queue`,
|
|
prepareHeaders: (headers, { getState }) => {
|
|
const token = (getState() as RootState).auth.token;
|
|
if (token) {
|
|
headers.set("authorization", `Bearer ${token}`);
|
|
}
|
|
const clientID = (getState() as RootState).auth.clientId;
|
|
if (clientID) {
|
|
headers.set("X-Client-Id", clientID);
|
|
}
|
|
return headers;
|
|
},
|
|
}),
|
|
endpoints: (builder) => ({
|
|
getQueues: builder.query({
|
|
query: () => "/",
|
|
}),
|
|
getQueueDetail: builder.query({
|
|
query: (queueId: string | undefined) => `/${queueId}`,
|
|
}),
|
|
createQueue: builder.mutation({
|
|
query: (data: CreateQueueRequest) => ({
|
|
url: "/",
|
|
method: "POST",
|
|
body: data,
|
|
}),
|
|
}),
|
|
}),
|
|
});
|
|
|
|
export const {
|
|
useGetQueuesQuery,
|
|
useGetQueueDetailQuery,
|
|
useCreateQueueMutation,
|
|
} = QueueApi;
|