Rework storage structs, link preview

This commit is contained in:
Christoph Hagen
2025-01-08 14:59:04 +01:00
parent b99c064d10
commit a7197b9628
75 changed files with 1365 additions and 1454 deletions

View File

@ -1,6 +1,8 @@
import Foundation
final class Post: Item {
final class Post: Item, DateItem, LocalizedItem {
override var itemType: ItemType { .post }
@Published
var isDraft: Bool
@ -142,10 +144,42 @@ final class Post: Item {
}
}
extension Post: DateItem {
}
extension Post: LocalizedItem {
extension Post {
convenience init(context: LoadingContext, id: String, data: Data) {
self.init(
content: context.content,
id: id,
isDraft: data.isDraft,
createdDate: data.createdDate,
startDate: data.startDate,
endDate: data.endDate,
tags: data.tags.compactMap(context.tag),
german: .init(context: context, data: data.german),
english: .init(context: context, data: data.english),
linkedPage: data.linkedPageId.map(context.page))
}
struct Data: Codable {
let isDraft: Bool
let createdDate: Date
let startDate: Date
let endDate: Date?
let tags: [String]
let german: LocalizedPost.Data
let english: LocalizedPost.Data
let linkedPageId: String?
}
var data: Data {
.init(
isDraft: isDraft,
createdDate: createdDate,
startDate: startDate,
endDate: hasEndDate ? endDate : nil,
tags: tags.map { $0.id },
german: german.data,
english: english.data,
linkedPageId: linkedPage?.id)
}
}