05/16 Fix bugs 1
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user