Rework storage structs, link preview
This commit is contained in:
@@ -12,14 +12,7 @@ final class LocalizedTag: ObservableObject {
|
||||
var name: String
|
||||
|
||||
@Published
|
||||
var linkPreviewTitle: String?
|
||||
|
||||
@Published
|
||||
var linkPreviewDescription: String?
|
||||
|
||||
/// The image id of the thumbnail
|
||||
@Published
|
||||
var linkPreviewImage: FileResource?
|
||||
var linkPreview: LinkPreview
|
||||
|
||||
/// The original url in the previous site layout
|
||||
let originalUrl: String?
|
||||
@@ -27,42 +20,51 @@ final class LocalizedTag: ObservableObject {
|
||||
init(content: Content,
|
||||
urlComponent: String,
|
||||
name: String,
|
||||
linkPreviewTitle: String? = nil,
|
||||
linkPreviewDescription: String? = nil,
|
||||
linkPreviewImage: FileResource? = nil,
|
||||
linkPreview: LinkPreview = .init(),
|
||||
originalUrl: String? = nil) {
|
||||
self.content = content
|
||||
self.urlComponent = urlComponent
|
||||
self.name = name
|
||||
self.linkPreviewTitle = linkPreviewTitle
|
||||
self.linkPreviewDescription = linkPreviewDescription
|
||||
self.linkPreviewImage = linkPreviewImage
|
||||
self.linkPreview = linkPreview
|
||||
self.originalUrl = originalUrl
|
||||
}
|
||||
|
||||
func isValid(urlComponent: String) -> Bool {
|
||||
!urlComponent.isEmpty &&
|
||||
content.isValidIdForTagOrPageOrPost(urlComponent) &&
|
||||
!content.containsTag(withUrlComponent: urlComponent)
|
||||
}
|
||||
|
||||
/// The title to display when considering multiple items of this tag
|
||||
var title: String {
|
||||
linkPreviewTitle ?? name
|
||||
linkPreview.title ?? name
|
||||
}
|
||||
}
|
||||
|
||||
extension LocalizedTag: LinkPreviewItem {
|
||||
|
||||
}
|
||||
// MARK: Storage
|
||||
|
||||
extension LocalizedTag {
|
||||
|
||||
var tagFile: LocalizedTagFile {
|
||||
convenience init(context: LoadingContext, data: Data) {
|
||||
self.init(
|
||||
content: context.content,
|
||||
urlComponent: data.urlComponent,
|
||||
name: data.name,
|
||||
linkPreview: .init(context: context, data: data.linkPreview),
|
||||
originalUrl: data.originalUrl)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
let urlComponent: String
|
||||
let name: String
|
||||
let linkPreview: LinkPreview.Data
|
||||
let originalUrl: String?
|
||||
}
|
||||
|
||||
var data: Data {
|
||||
.init(urlComponent: urlComponent,
|
||||
name: name,
|
||||
linkPreviewTitle: linkPreviewTitle,
|
||||
linkPreviewDescription: linkPreviewDescription,
|
||||
linkPreviewImage: linkPreviewImage?.id,
|
||||
originalURL: originalUrl)
|
||||
linkPreview: linkPreview.data,
|
||||
originalUrl: originalUrl)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user