export async function fetchFormats(source) { const response = await fetch(`/api/formats?source=${encodeURIComponent(source)}`); const data = await response.json(); return data.targets; } export async function fetchConfig() { const response = await fetch('/api/config'); return response.json(); } export async function uploadFiles(items) { const formData = new FormData(); const targetFormats = []; const qualities = []; const iconSizes = []; for (const item of items) { formData.append('files', item.file); targetFormats.push(item.targetFormat); qualities.push(item.quality ?? null); iconSizes.push(item.iconSize ?? null); } formData.append('targetFormats', JSON.stringify(targetFormats)); formData.append('qualities', JSON.stringify(qualities)); formData.append('iconSizes', JSON.stringify(iconSizes)); const response = await fetch('/api/jobs', { method: 'POST', body: formData }); const data = await response.json(); return data.jobs; } export async function fetchJobStatus(id) { const response = await fetch(`/api/jobs/${id}`); return response.json(); } export function downloadUrl(id) { return `/api/jobs/${id}/download`; }