diff --git a/renderer/Settings.jsx b/renderer/Settings.jsx index 0c5450e..bbb9626 100644 --- a/renderer/Settings.jsx +++ b/renderer/Settings.jsx @@ -5,6 +5,30 @@ export default function Settings() { const [giteaToken, setGiteaToken] = useState(''); const [giteaURL, setGiteaURL] = useState(''); + function normalizeAndValidateGiteaUrl(rawUrl) { + const value = (rawUrl || '').trim(); + if (!value) return { ok: true, value: '' }; + + let parsed; + try { + parsed = new URL(value); + } catch (_) { + return { + ok: false, + error: 'Ungültige Gitea-URL. Beispiel für IPv6: http://[2001:db8::1]:3000' + }; + } + + if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') { + return { + ok: false, + error: 'Die Gitea-URL muss mit http:// oder https:// beginnen.' + }; + } + + return { ok: true, value: value.replace(/\/$/, '') }; + } + useEffect(() => { window.electronAPI.loadCredentials().then(data => { if (data) { @@ -16,7 +40,13 @@ export default function Settings() { }, []); const save = () => { - window.electronAPI.saveCredentials({ githubToken, giteaToken, giteaURL }); + const checkedUrl = normalizeAndValidateGiteaUrl(giteaURL); + if (!checkedUrl.ok) { + alert(checkedUrl.error); + return; + } + + window.electronAPI.saveCredentials({ githubToken, giteaToken, giteaURL: checkedUrl.value }); alert('Settings saved securely!'); } diff --git a/renderer/icon.png b/renderer/icon.png new file mode 100644 index 0000000..bf44e4a Binary files /dev/null and b/renderer/icon.png differ diff --git a/renderer/index.html b/renderer/index.html index b7d3557..9da8662 100644 --- a/renderer/index.html +++ b/renderer/index.html @@ -4,30 +4,63 @@
Alle wichtigen Optionen auf einer Seite: Zugangsdaten, Verbindungscheck, Darstellung und Updates.
API-Zugriffe für GitHub und Gitea konfigurieren.
+Übersicht und Explorer an deinen Arbeitsstil anpassen.
+Direkt sehen, ob URL, API und Auth sauber antworten.
+Version prüfen und neue Releases direkt anstoßen.
+