import React, { useState, useEffect } from 'react'; export default function Settings({ onClose }) { const [githubToken, setGithubToken] = useState(''); const [giteaToken, setGiteaToken] = useState(''); const [giteaURL, setGiteaURL] = useState(''); const [savedOk, setSavedOk] = useState(false); 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) { setGithubToken(data.githubToken || ''); setGiteaToken(data.giteaToken || ''); setGiteaURL(data.giteaURL || ''); } }); }, []); function save() { const checkedUrl = normalizeAndValidateGiteaUrl(giteaURL); if (!checkedUrl.ok) { alert(checkedUrl.error); return; } window.electronAPI.saveCredentials({ githubToken, giteaToken, giteaURL: checkedUrl.value }); setSavedOk(true); setTimeout(() => setSavedOk(false), 2500); } return (
Konfiguration

⚙️ Einstellungen

Zugangsdaten für GitHub und Gitea hinterlegen.

Zugangsdaten

API-Zugriffe für GitHub und Gitea konfigurieren.

setGithubToken(e.target.value)} />
setGiteaToken(e.target.value)} />
setGiteaURL(e.target.value)} />
Hinweis: IPv6 mit Klammern eingeben, z.B. http://[2001:db8::1]:3000
{onClose && ( )}
); }