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 @@ Git Manager Explorer Pro +
-
- - - - +
+
+
+ +
+
+ Workspace Control + Git Manager Explorer Pro +
+
+ +
+
+ + +
+ +
+ Steuerung + + + + + +
+ +
+ + Bereit +
+
- -
- - - - - + +
+
+ Quelle + + +
+ +
+ Repository + +
+ + +
+ + +
- - Bereit
@@ -36,65 +69,155 @@