Rework storage structs, link preview
This commit is contained in:
@ -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)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user