diff --git a/renderer/Settings.jsx b/renderer/Settings.jsx index 4e230ea..b42fea2 100644 --- a/renderer/Settings.jsx +++ b/renderer/Settings.jsx @@ -1,10 +1,13 @@ -import React, { useState, useEffect } from 'react'; +import React, { useState, useEffect, useRef } from 'react'; export default function Settings({ onClose }) { const [githubToken, setGithubToken] = useState(''); const [giteaToken, setGiteaToken] = useState(''); const [giteaURL, setGiteaURL] = useState(''); + const [avatarB64, setAvatarB64] = useState(null); const [savedOk, setSavedOk] = useState(false); + const [avatarUploading, setAvatarUploading] = useState(false); + const fileInputRef = useRef(null); function normalizeAndValidateGiteaUrl(rawUrl) { const value = (rawUrl || '').trim(); @@ -36,17 +39,46 @@ export default function Settings({ onClose }) { setGithubToken(data.githubToken || ''); setGiteaToken(data.giteaToken || ''); setGiteaURL(data.giteaURL || ''); + setAvatarB64(data.avatarB64 || null); } }); }, []); - function save() { + function handleAvatarFileChange(e) { + const file = e.target.files[0]; + if (!file) return; + const reader = new FileReader(); + reader.onload = (ev) => setAvatarB64(ev.target.result); + reader.readAsDataURL(file); + } + + async function save() { const checkedUrl = normalizeAndValidateGiteaUrl(giteaURL); if (!checkedUrl.ok) { alert(checkedUrl.error); return; } - window.electronAPI.saveCredentials({ githubToken, giteaToken, giteaURL: checkedUrl.value }); + window.electronAPI.saveCredentials({ + githubToken, + giteaToken, + giteaURL: checkedUrl.value, + avatarB64: avatarB64 || null + }); + + // Avatar automatisch zu Gitea pushen, wenn Token + URL vorhanden + if (avatarB64 && giteaToken && checkedUrl.value) { + setAvatarUploading(true); + const result = await window.electronAPI.updateGiteaAvatar({ + token: giteaToken, + url: checkedUrl.value, + imageBase64: avatarB64 + }); + setAvatarUploading(false); + if (!result.ok) { + console.warn('Avatar-Upload fehlgeschlagen:', result.error); + } + } + setSavedOk(true); setTimeout(() => setSavedOk(false), 2500); } @@ -55,12 +87,28 @@ export default function Settings({ onClose }) {
- Zugangsdaten für GitHub und Gitea hinterlegen. -
++ Zugangsdaten für GitHub und Gitea hinterlegen. +
+Automatische lokale Backups in einen Zielordner.
-