import { ApiError, request } from './client'; import type { components } from './generated/v1'; // The list endpoint (GET /api/ffmpeg/profiles) is already provided by pickers.ts as // getFFmpegProfiles() returning FFmpegProfile (= FFmpegFullProfileResponseModel). This // module adds the by-id read, the mutations, and the hardware-acceleration lookup. export type FFmpegProfileDetail = components['schemas']['FFmpegFullProfileResponseModel']; export type CreateFFmpegProfileRequest = components['schemas']['CreateFFmpegProfileRequest']; export type UpdateFFmpegProfileRequest = components['schemas']['UpdateFFmpegProfileRequest']; export type HardwareAccelerationKind = components['schemas']['HardwareAccelerationKind']; export function getFFmpegProfile(id: number): Promise { return request(`/api/ffmpeg/profiles/${id}`); } export function createFFmpegProfile(body: CreateFFmpegProfileRequest): Promise { return request('/api/ffmpeg/profiles', { body, method: 'POST' }); } export function updateFFmpegProfile(id: number, body: UpdateFFmpegProfileRequest): Promise { return request(`/api/ffmpeg/profiles/${id}`, { body, method: 'PUT' }); } export function deleteFFmpegProfile(id: number): Promise { return request(`/api/ffmpeg/profiles/${id}`, { method: 'DELETE' }); } export function getHardwareAccelerationKinds(): Promise { return request('/api/ffmpeg/hardware-acceleration-kinds'); } export function messageFromFFmpegProfileError(error: unknown, fallback = 'Unable to load FFmpeg profiles'): string { if (error instanceof ApiError) { return error.detail ?? error.message; } if (error instanceof Error) { return error.message; } return fallback; }