05/16 Fix bugs 1

This commit is contained in:
Nguyen Ngo
2026-05-16 14:05:50 -04:00
parent 4c7ddede82
commit 12d07cf250
+10 -6
View File
@@ -71,21 +71,25 @@ struct APIResponse<T: Decodable & Sendable>: Decodable, Sendable {
struct APIUser: Decodable, Sendable { struct APIUser: Decodable, Sendable {
let id: Int let id: Int
let username: String let username: String
let fullName: String // empty string when not set; never nil
let email: String let email: String
let role: String let role: String
let createdAt: String? let createdAt: String?
var displayName: String { username } /// Returns full_name when set, otherwise falls back to username.
/// Mirrors User.display_name on the server.
var displayName: String { fullName.isEmpty ? username : fullName }
nonisolated init(from decoder: any Decoder) throws { nonisolated init(from decoder: any Decoder) throws {
let c = try decoder.container(keyedBy: CodingKeys.self) let c = try decoder.container(keyedBy: CodingKeys.self)
id = try c.decode(Int.self, forKey: .id) id = try c.decode(Int.self, forKey: .id)
username = try c.decode(String.self, forKey: .username) username = try c.decode(String.self, forKey: .username)
email = try c.decode(String.self, forKey: .email) fullName = (try? c.decode(String.self, forKey: .fullName)) ?? ""
role = try c.decode(String.self, forKey: .role) email = try c.decode(String.self, forKey: .email)
role = try c.decode(String.self, forKey: .role)
createdAt = try? c.decode(String.self, forKey: .createdAt) createdAt = try? c.decode(String.self, forKey: .createdAt)
} }
private enum CodingKeys: String, CodingKey { private enum CodingKeys: String, CodingKey {
case id, username, email, role, createdAt case id, username, fullName, email, role, createdAt
} }
} }