production-taskbar-client / src / renderer / apis / dataApi.js
dataApi.js
Raw
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";

const isDev = process.env.NODE_ENV === "development";

const baseUrl = new URL(process.env.DATA_ACQUISITION_URL);
const kDataAcquisitionApi = "sebn-data-acquisition/api";
const kWorkplaceLocationApi =
  "sebn-material-requests-manager/api/workplace-location";
const kLocateWorkplaceUrl = `${baseUrl.href}sebn-material-requests-manager/locate`;

export const dataApi = createApi({
  reducerPath: "dataApi",
  baseQuery: fetchBaseQuery({
    baseUrl: baseUrl.href,
  }),
  endpoints: (builder) => ({
    fetchEmployee: builder.mutation({
      query: (userId) => ({
        url: `${kDataAcquisitionApi}/sebn-taskbar-manager/employee-info/`,
        method: "POST",
        body: {
          id: userId,
        },
      }),
    }),
    fetchBoards: builder.mutation({
      query: ({ location, hostname }) => ({
        url: `${kDataAcquisitionApi}/sebn-taskbar-manager/mao-boards/`,
        method: "POST",
        body: {
          connection: `MAO / ${location}`,
          hostname,
        },
      }),
    }),
    getWorkplaceLocationUrl: builder.mutation({
      query: (hostname) => ({
        url: `${kWorkplaceLocationApi}/${hostname}/`,
        method: "GET",
        validateStatus: () => true,
        responseHandler: (response) => {
          if (response.status === 200)
            return `${kLocateWorkplaceUrl}/${hostname}/`;
          return null;
        },
      }),
    }),
  }),
});

export const {
  useFetchEmployeeMutation,
  useFetchBoardsMutation,
  useGetWorkplaceLocationUrlMutation,
} = dataApi;