05/16 Fix bugs 1

This commit is contained in:
Nguyen Ngo
2026-05-16 14:05:50 -04:00
parent 4c7ddede82
commit 12d07cf250
+6 -2
View File
@@ -71,21 +71,25 @@ struct APIResponse<T: Decodable & Sendable>: Decodable, Sendable {
struct APIUser: Decodable, Sendable {
let id: Int
let username: String
let fullName: String // empty string when not set; never nil
let email: String
let role: 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 {
let c = try decoder.container(keyedBy: CodingKeys.self)
id = try c.decode(Int.self, forKey: .id)
username = try c.decode(String.self, forKey: .username)
fullName = (try? c.decode(String.self, forKey: .fullName)) ?? ""
email = try c.decode(String.self, forKey: .email)
role = try c.decode(String.self, forKey: .role)
createdAt = try? c.decode(String.self, forKey: .createdAt)
}
private enum CodingKeys: String, CodingKey {
case id, username, email, role, createdAt
case id, username, fullName, email, role, createdAt
}
}