50 lines
989 B
Swift
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
|
|
}
|
|
}
|