Fix: add API request timeout to avoid stuck storage status

This commit is contained in:
Ponte
2026-02-11 19:32:10 +01:00
parent 3b86c381e3
commit e678956f19

25
app.js
View File

@@ -636,9 +636,14 @@ function markLocalDataForImport() {
}
async function apiRequest(path, options = {}) {
const controller = new AbortController();
const timeoutMs = options.timeoutMs || 6000;
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
const requestOptions = {
method: options.method || "GET",
headers: {},
signal: controller.signal,
};
if (options.body !== undefined) {
@@ -646,16 +651,20 @@ async function apiRequest(path, options = {}) {
requestOptions.body = JSON.stringify(options.body);
}
const response = await fetch(path, requestOptions);
const rawText = await response.text();
const payload = rawText ? JSON.parse(rawText) : {};
try {
const response = await fetch(path, requestOptions);
const rawText = await response.text();
const payload = rawText ? JSON.parse(rawText) : {};
if (!response.ok) {
const message = payload && payload.message ? payload.message : `HTTP ${response.status}`;
throw new Error(message);
if (!response.ok) {
const message = payload && payload.message ? payload.message : `HTTP ${response.status}`;
throw new Error(message);
}
return payload;
} finally {
clearTimeout(timeoutId);
}
return payload;
}
function applyCatalogPayload(payload, preferredBrand, preferredConsole) {