23
common/resources/client/uploads/requests/delete-file-entries.ts
Executable file
23
common/resources/client/uploads/requests/delete-file-entries.ts
Executable file
@@ -0,0 +1,23 @@
|
||||
import {useMutation} from '@tanstack/react-query';
|
||||
import {BackendResponse} from '../../http/backend-response/backend-response';
|
||||
import {apiClient} from '../../http/query-client';
|
||||
import {showHttpErrorToast} from '../../utils/http/show-http-error-toast';
|
||||
|
||||
interface Response extends BackendResponse {}
|
||||
|
||||
interface Payload {
|
||||
entryIds?: number[];
|
||||
deleteForever?: boolean;
|
||||
paths?: string[];
|
||||
}
|
||||
|
||||
function deleteFileEntries(payload: Payload): Promise<Response> {
|
||||
return apiClient.post('file-entries/delete', payload).then(r => r.data);
|
||||
}
|
||||
|
||||
export function useDeleteFileEntries() {
|
||||
return useMutation({
|
||||
mutationFn: (props: Payload) => deleteFileEntries(props),
|
||||
onError: err => showHttpErrorToast(err),
|
||||
});
|
||||
}
|
||||
41
common/resources/client/uploads/requests/use-file-entry-model.ts
Executable file
41
common/resources/client/uploads/requests/use-file-entry-model.ts
Executable file
@@ -0,0 +1,41 @@
|
||||
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();
|
||||
}
|
||||
Reference in New Issue
Block a user