feat(web): API client modules for quarantine + admin quarantine

This commit is contained in:
2026-04-30 20:26:07 -04:00
parent b7f8136502
commit b653e83478
6 changed files with 395 additions and 1 deletions
+37
View File
@@ -0,0 +1,37 @@
import { createQuery } from '@tanstack/svelte-query';
import { api, apiFetch } from './client';
import { qk } from './queries';
import type {
LidarrQuarantineRow,
LidarrQuarantineMineRow,
LidarrQuarantineReason
} from './types';
export type FlagParams = {
track_id: string;
reason: LidarrQuarantineReason;
notes?: string;
};
export async function flagTrack(params: FlagParams): Promise<LidarrQuarantineRow> {
const body: FlagParams = { track_id: params.track_id, reason: params.reason };
if (params.notes && params.notes.length > 0) body.notes = params.notes;
return api.post<LidarrQuarantineRow>('/api/quarantine', body);
}
// Server returns 204 (no body) for DELETE; apiFetch handles it.
export async function unflagTrack(trackID: string): Promise<void> {
await apiFetch(`/api/quarantine/${trackID}`, { method: 'DELETE' });
}
export async function listMyQuarantine(): Promise<LidarrQuarantineMineRow[]> {
return api.get<LidarrQuarantineMineRow[]>('/api/quarantine/mine');
}
export function createMyQuarantineQuery() {
return createQuery({
queryKey: qk.myQuarantine(),
queryFn: listMyQuarantine,
staleTime: 60_000
});
}