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