mirror of
https://github.com/vibegif/vibegif.lol.git
synced 2026-04-07 02:12:12 +00:00
Fix: show detailed OpenRouter/Gemini errors
This commit is contained in:
61
index.html
61
index.html
@@ -213,6 +213,60 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function safeJsonStringify(v) {
|
||||||
|
try { return JSON.stringify(v); } catch (_) { return String(v); }
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractApiErrorDetails(payload) {
|
||||||
|
if (!payload) return '';
|
||||||
|
var err = payload.error || payload;
|
||||||
|
var parts = [];
|
||||||
|
|
||||||
|
if (typeof err === 'string') parts.push(err);
|
||||||
|
if (err && typeof err.message === 'string') parts.push(err.message);
|
||||||
|
if (err && typeof err.code === 'string') parts.push('code: ' + err.code);
|
||||||
|
if (err && typeof err.type === 'string') parts.push('type: ' + err.type);
|
||||||
|
|
||||||
|
if (err && err.metadata) {
|
||||||
|
var md = err.metadata;
|
||||||
|
if (md.provider_name) parts.push('provider: ' + md.provider_name);
|
||||||
|
if (md.raw && typeof md.raw === 'string') parts.push(md.raw);
|
||||||
|
if (md.reason) parts.push(md.reason);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err && err.details) {
|
||||||
|
if (typeof err.details === 'string') parts.push(err.details);
|
||||||
|
else parts.push(safeJsonStringify(err.details));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!parts.length) return '';
|
||||||
|
var seen = {};
|
||||||
|
var deduped = [];
|
||||||
|
for (var i = 0; i < parts.length; i++) {
|
||||||
|
var p = (parts[i] || '').trim();
|
||||||
|
if (!p || seen[p]) continue;
|
||||||
|
seen[p] = true;
|
||||||
|
deduped.push(p);
|
||||||
|
}
|
||||||
|
return deduped.join(' | ');
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseErrorResponse(res) {
|
||||||
|
return res.text().then(function(raw) {
|
||||||
|
var json = null;
|
||||||
|
if (raw) {
|
||||||
|
try { json = JSON.parse(raw); } catch (_) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
var detail = extractApiErrorDetails(json);
|
||||||
|
if (!detail && raw) detail = raw.trim();
|
||||||
|
if (!detail) detail = 'Unknown API error';
|
||||||
|
|
||||||
|
var statusPart = 'HTTP ' + res.status + (res.statusText ? ' ' + res.statusText : '');
|
||||||
|
return statusPart + ' — ' + detail;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function generateFrame(opts) {
|
function generateFrame(opts) {
|
||||||
var model = opts.model;
|
var model = opts.model;
|
||||||
var messages = opts.messages;
|
var messages = opts.messages;
|
||||||
@@ -246,9 +300,7 @@
|
|||||||
})
|
})
|
||||||
.then(function(res) {
|
.then(function(res) {
|
||||||
if (!res.ok) {
|
if (!res.ok) {
|
||||||
return res.json().catch(function() { return {}; }).then(function(e) {
|
return parseErrorResponse(res).then(function(msg) { throw new Error(msg); });
|
||||||
throw new Error((e && e.error && e.error.message) || 'API error ' + res.status);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return res.json();
|
return res.json();
|
||||||
})
|
})
|
||||||
@@ -408,7 +460,8 @@
|
|||||||
setProgress(100, 'done! 🎉');
|
setProgress(100, 'done! 🎉');
|
||||||
})
|
})
|
||||||
.catch(function(err) {
|
.catch(function(err) {
|
||||||
setProgress(0, 'error: ' + err.message);
|
var msg = (err && err.message) ? err.message : String(err);
|
||||||
|
setProgress(0, 'error: ' + msg);
|
||||||
console.error('vibegif error:', err);
|
console.error('vibegif error:', err);
|
||||||
})
|
})
|
||||||
.then(function() {
|
.then(function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user