import { useState, type FormEvent } from 'react' import { api } from '../api' import { run, useStore } from '../store' import { Feld, Karte, Knopf } from '../components/Bausteine' import { Avatar } from '../components/Avatar' export function Konto() { const user = useStore((s) => s.user) const note = useStore((s) => s.note) const [aktuell, setAktuell] = useState('') const [neu, setNeu] = useState('') const [wieder, setWieder] = useState('') const [wartet, setWartet] = useState(false) const zuKurz = neu.length > 0 && neu.length < 8 const ungleich = wieder.length > 0 && neu !== wieder async function wechseln(e: FormEvent) { e.preventDefault() // Die Wiederholung prüft nur diese Seite — der Dienst kennt sie nicht. // Deshalb hier ein eigener Satz statt einer Anfrage, die nichts // bewirken kann. if (neu !== wieder) { note('fehler', 'Die beiden neuen Passwörter stimmen nicht überein.') return } setWartet(true) const ok = await run( () => api.changePassword(aktuell, neu), 'Passwort geändert. Alle anderen Anmeldungen wurden beendet.', ) setWartet(false) if (ok) { setAktuell('') setNeu('') setWieder('') } } // Der Discord-Name steht nur daneben, wenn er vom Anzeigenamen abweicht — // sonst stuende dort zweimal dasselbe. const herkunft = user?.discordName && user.discordName !== user.username ? `über Discord angemeldet — dort „${user.discordName}"` : 'über Discord angemeldet' return (
{user?.username ?? '—'}
{user?.discord ? herkunft : 'mit Passwort angemeldet'}
Dieses Konto hat kein Passwort — es kommt ausschließlich über Discord herein. Das Formular unten wirkt nur für Konten mit Passwort.
)}