import SwiftUI /// Stufe 1 zeigt hier nur, woran man ist, und lässt abmelden. Die echten /// Einstellungen (Hauptwährung, Budget-Starttag, Sprache, Gerätemarken) /// kommen in Stufe 5. struct EinstellungenAnsicht: View { @Environment(AppZustand.self) private var zustand @State private var zeigeAbmeldefrage = false var body: some View { Form { Section { if case .bereit(let benutzer) = zustand.lage { LabeledContent(String(localized: "einstellungen.angemeldetAls"), value: benutzer.anzeigename) } if let adresse = zustand.serverAdresse { LabeledContent(String(localized: "einstellungen.server"), value: adresse.host() ?? adresse.absoluteString) } } header: { Text(String(localized: "einstellungen.zugang")) } footer: { Text(String(localized: "einstellungen.markeErklaerung")) } Section(String(localized: "einstellungen.ausDemServer")) { LabeledContent(String(localized: "einstellungen.hauptwaehrung"), value: zustand.einstellungen.basiswaehrung) LabeledContent(String(localized: "einstellungen.budgetStarttag"), value: "\(zustand.einstellungen.budgetStarttag)") } Section { Button(String(localized: "allgemein.abmelden"), role: .destructive) { zeigeAbmeldefrage = true } } footer: { Text(String(localized: "einstellungen.abmeldenErklaerung")) } } .navigationTitle(String(localized: "reiter.einstellungen")) .refreshable { await zustand.aktualisiereEinstellungen() } .confirmationDialog(String(localized: "einstellungen.abmeldenFrage"), isPresented: $zeigeAbmeldefrage, titleVisibility: .visible) { Button(String(localized: "allgemein.abmelden"), role: .destructive) { Task { await zustand.meldeAb() } } Button(String(localized: "allgemein.abbrechen"), role: .cancel) {} } } }