Commit c1474dd5 authored by Merekeyev Dias's avatar Merekeyev Dias

fixed endpoints conflict

parent 69429c0e
...@@ -32,58 +32,6 @@ export const apiSlice = createApi({ ...@@ -32,58 +32,6 @@ export const apiSlice = createApi({
return headers; return headers;
}, },
}), }),
tagTypes: ["organizations"], tagTypes: ["organizations", "requests"],
endpoints: (builder) => ({ endpoints: () => ({}),
getOrganizations: builder.query<Organization[], void>({
query: () => '/list',
providesTags: ["organizations"],
}),
getOrganization: builder.query<Organization, string>({
query: (orgId) => `/info?id=${orgId}`,
}),
addNewOrganization: builder.mutation<Organization, Partial<Organization>>({
query: (initialOrg) => ({
url: '/save',
method: 'POST',
body: initialOrg,
}),
invalidatesTags: ["organizations"],
}),
editOrganization: builder.mutation<Organization, Partial<Organization>>({
query: ({ id, ...rest }) => ({
url: `/save?id=${id}`,
method: 'POST',
body: rest,
}),
async onQueryStarted(arg, { dispatch, queryFulfilled }) {
try {
const { data } = await queryFulfilled;
dispatch(apiSlice.util.updateQueryData('getOrganizations', undefined, (draft) => {
const index = draft.findIndex(org => org.id === data.id);
if (index !== -1) {
draft[index] = data;
}
}));
} catch {
// handle error
}
},
invalidatesTags: ["organizations"],
}),
deleteOrganization: builder.mutation<{ success: boolean; id: number }, number>({
query: (orgId) => ({
url: `/delete?id=${orgId}`,
method: 'DELETE',
}),
invalidatesTags: ["organizations"],
}),
}),
}); });
\ No newline at end of file
export const {
useGetOrganizationsQuery,
useGetOrganizationQuery,
useAddNewOrganizationMutation,
useEditOrganizationMutation,
useDeleteOrganizationMutation,
} = apiSlice;
...@@ -16,15 +16,15 @@ interface Organization { ...@@ -16,15 +16,15 @@ interface Organization {
export const organizationApiSlice = apiSlice.injectEndpoints({ export const organizationApiSlice = apiSlice.injectEndpoints({
endpoints: (builder) => ({ endpoints: (builder) => ({
getOrganizations: builder.query<Organization[], void>({ getOrganizations: builder.query<Organization[], void>({
query: () => 'organizations/list', query: () => '/list',
providesTags: ["organizations"], providesTags: ["organizations"],
}), }),
getOrganization: builder.query<Organization, string>({ getOrganization: builder.query<Organization, string>({
query: (orgId) => `organizations/info?id=${orgId}`, query: (orgId) => `/info?id=${orgId}`,
}), }),
addNewOrganization: builder.mutation<Organization, Partial<Organization>>({ addNewOrganization: builder.mutation<Organization, Partial<Organization>>({
query: (initialOrg) => ({ query: (initialOrg) => ({
url: 'organizations/save', url: '/save',
method: 'POST', method: 'POST',
body: initialOrg, body: initialOrg,
}), }),
...@@ -32,15 +32,28 @@ export const organizationApiSlice = apiSlice.injectEndpoints({ ...@@ -32,15 +32,28 @@ export const organizationApiSlice = apiSlice.injectEndpoints({
}), }),
editOrganization: builder.mutation<Organization, Partial<Organization>>({ editOrganization: builder.mutation<Organization, Partial<Organization>>({
query: ({ id, ...rest }) => ({ query: ({ id, ...rest }) => ({
url: `organizations/edit?id=${id}`, url: `/save?id=${id}`,
method: 'PUT', method: 'POST',
body: rest, body: rest,
}), }),
async onQueryStarted(_arg, { dispatch, queryFulfilled }) {
try {
const { data } = await queryFulfilled;
dispatch(organizationApiSlice.util.updateQueryData('getOrganizations', undefined, (draft) => {
const index = draft.findIndex(org => org.id === data.id);
if (index !== -1) {
draft[index] = data;
}
}));
} catch {
// handle error
}
},
invalidatesTags: ["organizations"], invalidatesTags: ["organizations"],
}), }),
deleteOrganization: builder.mutation<{ success: boolean; id: number }, number>({ deleteOrganization: builder.mutation<{ success: boolean; id: number }, number>({
query: (orgId) => ({ query: (orgId) => ({
url: `organizations/delete?id=${orgId}`, url: `/delete?id=${orgId}`,
method: 'DELETE', method: 'DELETE',
}), }),
invalidatesTags: ["organizations"], invalidatesTags: ["organizations"],
......
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Button, Space, Tag, Modal, message } from 'antd'; import { Button, Space, Tag, Modal, message } from 'antd';
import type { TableProps } from 'antd'; import type { TableProps } from 'antd';
import { getStatusText, getStatusColor } from './utils'; import { getStatusText, getStatusColor, openXMLInNewPage } from './utils';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
export interface DataType { export interface DataType {
...@@ -89,16 +89,6 @@ export const columns: TableProps<DataType>['columns'] = [ ...@@ -89,16 +89,6 @@ export const columns: TableProps<DataType>['columns'] = [
} }
] ]
const openXMLInNewPage = (xmlContent: string) => {
const blob = new Blob([xmlContent], { type: 'application/xml' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.target = '_blank';
a.click();
URL.revokeObjectURL(url);
}
export const ResendColumn: React.FC<{ data: DataType }> = () => { export const ResendColumn: React.FC<{ data: DataType }> = () => {
const [open, setOpen] = useState<boolean>(false); const [open, setOpen] = useState<boolean>(false);
......
...@@ -17,3 +17,13 @@ export const getStatusColor = (status: number) => { ...@@ -17,3 +17,13 @@ export const getStatusColor = (status: number) => {
default: return 'grey'; default: return 'grey';
} }
} }
export const openXMLInNewPage = (xmlContent: string) => {
const blob = new Blob([xmlContent], { type: 'application/xml' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.target = '_blank';
a.click();
URL.revokeObjectURL(url);
}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment