Fix /me-Decoding: is_founder/is_partner kommen als SQLite-Int 0/1, nicht Bool

Das Backend bool-konvertiert nur is_premium explizit; alle anderen 0/1-Spalten
gehen unverändert durch FastAPI. Decode-Fehler vorher still verschluckt → jetzt
auch geloggt, damit das nicht nochmal passiert.
This commit is contained in:
rene 2026-05-30 09:40:25 +02:00
parent bfd327bd40
commit 5bac31109d
3 changed files with 11 additions and 4 deletions

View file

@ -20,13 +20,18 @@ struct UserProfile: Decodable {
let realName: String? let realName: String?
let rolle: String? let rolle: String?
let isPremium: Bool? let isPremium: Bool?
let isFounder: Bool? // Backend bool-konvertiert nur is_premium; is_founder/is_partner kommen
let isPartner: Bool? // als SQLite-Int 0/1 zurück deshalb hier Int? statt Bool?.
let isFounder: Int?
let isPartner: Int?
let founderNumber: Int? let founderNumber: Int?
let subscriptionTier: String? let subscriptionTier: String?
let avatarUrl: String? let avatarUrl: String?
let wohnort: String? let wohnort: String?
let bio: String? let bio: String?
var isFounderFlag: Bool { isFounder == 1 }
var isPartnerFlag: Bool { isPartner == 1 }
} }
// MARK: - Dogs // MARK: - Dogs

View file

@ -62,6 +62,8 @@ final class AuthSession {
} }
} catch { } catch {
// Profil-Refresh ist non-critical; Settings zeigt sonst nur die Basics. // Profil-Refresh ist non-critical; Settings zeigt sonst nur die Basics.
// Loggen ist trotzdem nützlich, damit Decode-Fehler nicht stillschweigend untergehen.
print("loadProfile failed: \(error)")
} }
} }
} }

View file

@ -26,10 +26,10 @@ struct SettingsView: View {
Section("Account") { Section("Account") {
LabeledContent("Rolle", value: rolleLabel) LabeledContent("Rolle", value: rolleLabel)
if auth.profile?.isFounder == true { if auth.profile?.isFounderFlag == true {
LabeledContent("Founder", value: founderLabel) LabeledContent("Founder", value: founderLabel)
} }
if auth.profile?.isPartner == true { if auth.profile?.isPartnerFlag == true {
LabeledContent("Partner", value: "Ja") LabeledContent("Partner", value: "Ja")
} }
if let tier = auth.profile?.subscriptionTier, !tier.isEmpty { if let tier = auth.profile?.subscriptionTier, !tier.isEmpty {