Upload via GUI (27 Dateien)
This commit is contained in:
+45
-7
@@ -2125,6 +2125,36 @@ function updateSettingsHealth(patch) {
|
||||
syncSettingsPanelHeights();
|
||||
}
|
||||
|
||||
const INVALID_URL_HINT = 'Ungültige URL. Beispiel: https://git.example.net oder http://192.168.1.10:3000';
|
||||
|
||||
// Interne Fehlercodes aus dem Main-Prozess in verständliche Texte übersetzen.
|
||||
const ERROR_CODE_MESSAGES = {
|
||||
'missing-token-or-url': 'Gitea Token oder URL fehlt. Bitte in den Einstellungen speichern.',
|
||||
'missing-token': 'Token fehlt. Bitte in den Einstellungen speichern.',
|
||||
'missing-url': 'Gitea URL fehlt. Bitte in den Einstellungen speichern.'
|
||||
};
|
||||
|
||||
// Abgebrochene Git-Uebertragungen erkennen (grosses Repo, Server-/Proxy-Timeout).
|
||||
function isTransferAbortedError(raw) {
|
||||
return raw.includes('early eof')
|
||||
|| raw.includes('index-pack')
|
||||
|| raw.includes('rpc failed')
|
||||
|| raw.includes('remote end hung up')
|
||||
|| raw.includes('unexpected disconnect')
|
||||
|| raw.includes('transfer closed');
|
||||
}
|
||||
|
||||
// Nur echte URL-Parse-Fehler erkennen - nicht jede Meldung, in der "URL" vorkommt.
|
||||
function isInvalidUrlError(raw) {
|
||||
return raw.includes('ungültige url')
|
||||
|| raw.includes('ungueltige url')
|
||||
|| raw.includes('invalid url')
|
||||
|| raw.includes('err_invalid_url')
|
||||
|| raw.includes('invalid uri')
|
||||
|| raw.includes('unsupported protocol')
|
||||
|| raw.includes('only absolute urls');
|
||||
}
|
||||
|
||||
function normalizeAndValidateGiteaUrl(rawUrl) {
|
||||
const value = (rawUrl || '').trim();
|
||||
if (!value) return { ok: true, value: '' };
|
||||
@@ -2135,7 +2165,7 @@ function normalizeAndValidateGiteaUrl(rawUrl) {
|
||||
} catch (_) {
|
||||
return {
|
||||
ok: false,
|
||||
error: 'Ungültige URL. Beispiel für IPv6: http://[2001:db8::1]:3000'
|
||||
error: INVALID_URL_HINT
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2173,8 +2203,16 @@ function renderGithubTokenHint(rawToken) {
|
||||
}
|
||||
|
||||
function mapErrorMessage(message) {
|
||||
const raw = String(message || '').toLowerCase();
|
||||
if (!raw) return 'Unbekannter Fehler';
|
||||
const original = String(message ?? '').trim();
|
||||
if (!original) return 'Unbekannter Fehler';
|
||||
const raw = original.toLowerCase();
|
||||
|
||||
if (ERROR_CODE_MESSAGES[raw]) return ERROR_CODE_MESSAGES[raw];
|
||||
|
||||
// Zuerst pruefen: abgebrochene Uebertragungen sind spezifischer als die Status-Code-Heuristik unten.
|
||||
if (isTransferAbortedError(raw)) {
|
||||
return 'Übertragung vom Server abgebrochen (early EOF / index-pack). Repository zu groß oder Timeout beim Gitea-Server bzw. Reverse-Proxy. Bitte erneut versuchen.';
|
||||
}
|
||||
|
||||
if (raw.includes('401') || raw.includes('unauthorized') || raw.includes('authentifizierung')) {
|
||||
return 'Authentifizierung fehlgeschlagen. Bitte Token prüfen.';
|
||||
@@ -2186,15 +2224,15 @@ function mapErrorMessage(message) {
|
||||
return 'Server oder Ressource nicht gefunden. URL/Repo prüfen.';
|
||||
}
|
||||
if (raw.includes('econnrefused') || raw.includes('enotfound') || raw.includes('eai_again') || raw.includes('getaddrinfo')) {
|
||||
return 'Server nicht erreichbar. DNS, IPv4/IPv6 und Port prüfen.';
|
||||
return 'Server nicht erreichbar. DNS, Server-IP und Port prüfen.';
|
||||
}
|
||||
if (raw.includes('timeout') || raw.includes('econnaborted') || raw.includes('zeitueberschreitung') || raw.includes('zeitüberschreitung')) {
|
||||
return 'Zeitüberschreitung bei der Verbindung. Bitte erneut versuchen.';
|
||||
}
|
||||
if (raw.includes('ungueltige') || raw.includes('ungültige') || raw.includes('invalid') || raw.includes('url')) {
|
||||
return 'Ungültige URL. Beispiel für IPv6: http://[2001:db8::1]:3000';
|
||||
if (isInvalidUrlError(raw)) {
|
||||
return INVALID_URL_HINT;
|
||||
}
|
||||
return String(message);
|
||||
return original;
|
||||
}
|
||||
|
||||
function setStatus(txt) {
|
||||
|
||||
Reference in New Issue
Block a user