refactor(events): type external-media list response, drop any casts

This commit is contained in:
Luca
2026-05-04 12:28:46 +02:00
parent bfd7169fc4
commit ffbb0e659f
2 changed files with 41 additions and 13 deletions
+39 -11
View File
@@ -1,22 +1,50 @@
import { api } from '../config/api';
export interface ExternalEntry { name: string; type: 'dir' | 'file'; size?: number; mtime?: string }
export interface ExternalEntry {
name: string;
type: 'dir' | 'file';
size?: number;
mtime?: string;
}
export interface ExternalMediaListResponse {
path: string;
entries: ExternalEntry[];
canNavigateUp: boolean;
}
export interface ExternalMediaImportOptions {
recursive?: boolean;
map?: { individual?: string; collages?: string };
}
export interface ExternalMediaImportResult {
imported: number;
skipped: number;
thumbnailsQueued: number;
}
export const externalMediaService = {
async list(pathRel: string = ''): Promise<{ path: string; entries: ExternalEntry[]; canNavigateUp: boolean }> {
async list(pathRel: string = ''): Promise<ExternalMediaListResponse> {
const params = new URLSearchParams();
if (pathRel) params.set('path', pathRel);
const res = await api.get(`/admin/external-media/list?${params.toString()}`);
const res = await api.get<ExternalMediaListResponse>(`/admin/external-media/list?${params.toString()}`);
return res.data;
},
async importEvent(eventId: number, externalPath: string, options?: { recursive?: boolean; map?: { individual?: string; collages?: string } }): Promise<{ imported: number; skipped: number; thumbnailsQueued: number }> {
const res = await api.post(`/admin/external-media/events/${eventId}/import-external`, {
external_path: externalPath,
recursive: options?.recursive ?? true,
map: options?.map
});
async importEvent(
eventId: number,
externalPath: string,
options?: ExternalMediaImportOptions
): Promise<ExternalMediaImportResult> {
const res = await api.post<ExternalMediaImportResult>(
`/admin/external-media/events/${eventId}/import-external`,
{
external_path: externalPath,
recursive: options?.recursive ?? true,
map: options?.map
}
);
return res.data;
}
}
};