Files
mtdb_movie/common/resources/client/uploads/requests/use-file-entry-model.ts
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01:00

42 lines
1.1 KiB
TypeScript
Executable File

import {useQuery} from '@tanstack/react-query';
import {apiClient} from '@common/http/query-client';
import {BackendResponse} from '@common/http/backend-response/backend-response';
import {FileEntry} from '@common/uploads/file-entry';
interface Response extends BackendResponse {
fileEntry: FileEntry;
}
interface Options {
enabled?: boolean;
}
export function useFileEntryModel(
entryIdOrUrl: number | string | undefined,
options: Options = {enabled: true},
) {
const entryId = extractEntryId(entryIdOrUrl);
return useQuery({
queryKey: ['file-entries', `${entryId}`],
queryFn: () => fetchFileEntry(entryId!),
enabled: !!entryId && options.enabled,
});
}
function fetchFileEntry(entryId: number | string) {
return apiClient
.get<Response>(`file-entries/${entryId}/model`)
.then(response => response.data);
}
function extractEntryId(entryIdOrUrl: number | string | undefined) {
if (!entryIdOrUrl) {
return undefined;
}
const parsedId = parseInt(entryIdOrUrl as string);
if (!isNaN(parsedId)) {
return parsedId;
}
return `${entryIdOrUrl}`.split('/').pop();
}