(frontend) refactor document access API and remove infinite query

- Simplified the `getDocAccesses` function by removing pagination
parameters.
- Updated the `useDocAccesses` hook to reflect changes in the API
response type.
- Removed the `useDocAccessesInfinite` function to streamline document
access management.
This commit is contained in:
Nathan Panchout
2025-05-19 09:01:33 +02:00
committed by Anthony LC
parent 93d9dec068
commit cab7771b82

View File

@@ -1,12 +1,7 @@
import { UseQueryOptions, useQuery } from '@tanstack/react-query'; import { UseQueryOptions, useQuery } from '@tanstack/react-query';
import { import { APIError, errorCauses, fetchAPI } from '@/api';
APIError,
APIList,
errorCauses,
fetchAPI,
useAPIInfiniteQuery,
} from '@/api';
import { Access } from '@/docs/doc-management'; import { Access } from '@/docs/doc-management';
export type DocAccessesParams = { export type DocAccessesParams = {
@@ -14,18 +9,13 @@ export type DocAccessesParams = {
ordering?: string; ordering?: string;
}; };
export type DocAccessesAPIParams = DocAccessesParams & { export type DocAccessesAPIParams = DocAccessesParams & {};
page: number;
};
type AccessesResponse = APIList<Access>;
export const getDocAccesses = async ({ export const getDocAccesses = async ({
page,
docId, docId,
ordering, ordering,
}: DocAccessesAPIParams): Promise<AccessesResponse> => { }: DocAccessesAPIParams): Promise<Access[]> => {
let url = `documents/${docId}/accesses/?page=${page}`; let url = `documents/${docId}/accesses/`;
if (ordering) { if (ordering) {
url += '&ordering=' + ordering; url += '&ordering=' + ordering;
@@ -40,27 +30,18 @@ export const getDocAccesses = async ({
); );
} }
return response.json() as Promise<AccessesResponse>; return (await response.json()) as Access[];
}; };
export const KEY_LIST_DOC_ACCESSES = 'docs-accesses'; export const KEY_LIST_DOC_ACCESSES = 'docs-accesses';
export function useDocAccesses( export function useDocAccesses(
params: DocAccessesAPIParams, params: DocAccessesAPIParams,
queryConfig?: UseQueryOptions<AccessesResponse, APIError, AccessesResponse>, queryConfig?: UseQueryOptions<Access[], APIError, Access[]>,
) { ) {
return useQuery<AccessesResponse, APIError, AccessesResponse>({ return useQuery<Access[], APIError, Access[]>({
queryKey: [KEY_LIST_DOC_ACCESSES, params], queryKey: [KEY_LIST_DOC_ACCESSES, params],
queryFn: () => getDocAccesses(params), queryFn: () => getDocAccesses(params),
...queryConfig, ...queryConfig,
}); });
} }
/**
* @param param Used for infinite scroll pagination
* @param queryConfig
* @returns
*/
export function useDocAccessesInfinite(params: DocAccessesParams) {
return useAPIInfiniteQuery(KEY_LIST_DOC_ACCESSES, getDocAccesses, params);
}