0.12.0-18 Tests and Converter Fixes

This commit is contained in:
2026-03-31 12:51:32 +00:00
parent aea8fa6772
commit 5aa65ad4c1
24 changed files with 2281 additions and 249 deletions
+42 -2
View File
@@ -77,6 +77,45 @@ function afterMutationInvalidate(prefixes = []) {
invalidateCachedGet(prefixes);
}
function buildHandBrakePresetList(payload) {
const existing = Array.isArray(payload?.presets) ? payload.presets : [];
if (existing.length > 0) {
return existing;
}
const options = Array.isArray(payload?.options) ? payload.options : [];
const list = [];
for (const option of options) {
if (!option || option.disabled) {
continue;
}
const rawValue = option.value ?? option.name ?? option.label ?? '';
const name = String(rawValue || '').trim();
if (!name || name.startsWith('__group__')) {
continue;
}
const category = option.category ? String(option.category).trim() : '';
list.push({
name,
category: category || null
});
}
return list;
}
function normalizeHandBrakePresetPayload(payload) {
if (!payload || typeof payload !== 'object') {
return payload;
}
const existing = Array.isArray(payload.presets) ? payload.presets : [];
if (existing.length > 0) {
return payload;
}
return {
...payload,
presets: buildHandBrakePresetList(payload)
};
}
async function request(path, options = {}) {
const isFormDataBody = typeof FormData !== 'undefined' && options?.body instanceof FormData;
const mergedHeaders = {
@@ -324,11 +363,12 @@ export const api = {
getDetectedDrives() {
return request('/settings/drives');
},
getHandBrakePresets(options = {}) {
return requestCachedGet('/settings/handbrake-presets', {
async getHandBrakePresets(options = {}) {
const result = await requestCachedGet('/settings/handbrake-presets', {
ttlMs: 10 * 60 * 1000,
forceRefresh: options.forceRefresh
});
return normalizeHandBrakePresetPayload(result);
},
getScripts(options = {}) {
return requestCachedGet('/settings/scripts', {