ChWebsiteApp/CHDataManagement/Model/ContentLabel.swift
2025-02-05 12:24:33 +01:00

50 lines
989 B
Swift

import Foundation
final class ContentLabel: ObservableObject {
@Published
var icon: PageIcon
@Published
var value: String
init(icon: PageIcon, value: String) {
self.icon = icon
self.value = value
}
}
extension ContentLabel: Equatable {
static func == (lhs: ContentLabel, rhs: ContentLabel) -> Bool {
lhs.icon == rhs.icon && lhs.value == rhs.value
}
}
extension ContentLabel: Identifiable {
var id: String {
icon.rawValue + value
}
}
extension ContentLabel {
var data: Data {
.init(icon: icon.rawValue, value: value)
}
convenience init?(context: LoadingContext, data: Data) {
guard let icon = PageIcon(rawValue: data.icon) else {
context.error("Unknown label icon '\(data.icon)'")
return nil
}
self.init(icon: icon, value: data.value)
}
struct Data: Codable, Equatable {
let icon: String
let value: String
}
}