public extension User {
struct Avatar: Hashable {
public let colorHex: String
public let imageUrlPath: String?
public var imageUrl: String? {
imageUrlPath.flatMap { "https://avatars.devrant.com/\($0)" }
}
public init(colorHex: String, imageUrlPath: String?) {
self.colorHex = colorHex
self.imageUrlPath = imageUrlPath
}
}
}
extension User.Avatar {
struct CodingData: Codable {
let b: String
let i: String?
}
}
extension User.Avatar.CodingData {
var decoded: User.Avatar {
.init(
colorHex: b,
imageUrlPath: i
)
}
}