fix: Render ProfileModal in App.jsx and support guest display name editing from Navbar

This commit is contained in:
Richard
2026-08-01 12:20:24 +02:00
parent 5f1607f0d3
commit 4b13e57fcb
4 changed files with 42 additions and 15 deletions
+19 -10
View File
@@ -4,7 +4,9 @@ import { apiFetch } from '../api/client';
import { getRandomSkillColor } from '../utils/colors';
export default function ProfileModal({ user, skills, onClose, onUserUpdated, onRefreshSkills }) {
const [displayName, setDisplayName] = useState(user?.display_name || '');
const [displayName, setDisplayName] = useState(
user?.display_name || localStorage.getItem('guest_display_name') || ''
);
const [selectedSkillIds, setSelectedSkillIds] = useState(
user?.skills ? user.skills.map(s => s.id) : []
);
@@ -26,15 +28,22 @@ export default function ProfileModal({ user, skills, onClose, onUserUpdated, onR
setSavingProfile(true);
try {
const updatedUser = await apiFetch('/users/me/', {
method: 'PATCH',
body: JSON.stringify({
display_name: displayName.trim(),
skill_ids: selectedSkillIds
})
});
setSuccess('Profil und Anzeigename erfolgreich aktualisiert!');
onUserUpdated(updatedUser);
if (user) {
const updatedUser = await apiFetch('/users/me/', {
method: 'PATCH',
body: JSON.stringify({
display_name: displayName.trim(),
skill_ids: selectedSkillIds
})
});
setSuccess('Profil und Anzeigename erfolgreich aktualisiert!');
if (onUserUpdated) onUserUpdated(updatedUser);
} else {
localStorage.setItem('guest_display_name', displayName.trim());
window.dispatchEvent(new Event('guest_name_updated'));
setSuccess('Gast-Name erfolgreich gespeichert!');
setTimeout(() => onClose(), 600);
}
} catch (err) {
setError(err.message || 'Speichern des Profils fehlgeschlagen.');
} finally {