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 Tag: Item {
class Tag: Item, LocalizedItem {
override var itemType: ItemType { .tag }
@Published
var isVisible: Bool
@ -59,7 +61,7 @@ final class Tag: Item {
localized(in: language).title
}
override var itemType: ItemType {
override var itemReference: ItemReference {
.tagPage(self)
}
@ -68,21 +70,35 @@ final class Tag: Item {
}
func remove(_ file: FileResource) {
english.remove(linkPreviewImage: file)
german.remove(linkPreviewImage: file)
english.linkPreview.remove(file)
german.linkPreview.remove(file)
}
}
extension Tag: LocalizedItem {
}
// MARK: Storage
extension Tag {
var file: TagFile {
.init(id: id,
isVisible: isVisible,
german: german.tagFile,
english: english.tagFile)
convenience init(context: LoadingContext, id: String, data: Data) {
self.init(
content: context.content,
id: id,
isVisible: data.isVisible ?? true,
german: .init(context: context, data: data.german),
english: .init(context: context, data: data.english))
}
struct Data: Codable {
// Defaults to true if unset
let isVisible: Bool?
let german: LocalizedTag.Data
let english: LocalizedTag.Data
}
var data: Data {
.init(
isVisible: isVisible ? nil : false,
german: german.data,
english: english.data)
}
}