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

@@ -35,13 +35,7 @@ final class LocalizedPage: ObservableObject {
let originalUrl: String?
@Published
var linkPreviewImage: FileResource?
@Published
var linkPreviewTitle: String?
@Published
var linkPreviewDescription: String?
var linkPreview: LinkPreview
@Published
var hideTitle: Bool
@@ -51,18 +45,14 @@ final class LocalizedPage: ObservableObject {
title: String,
lastModified: Date? = nil,
originalUrl: String? = nil,
linkPreviewImage: FileResource? = nil,
linkPreviewTitle: String? = nil,
linkPreviewDescription: String? = nil,
linkPreview: LinkPreview = .init(),
hideTitle: Bool = false) {
self.content = content
self.urlString = urlString
self.title = title
self.lastModified = lastModified
self.originalUrl = originalUrl
self.linkPreviewImage = linkPreviewImage
self.linkPreviewTitle = linkPreviewTitle
self.linkPreviewDescription = linkPreviewDescription
self.linkPreview = linkPreview
self.hideTitle = hideTitle
}
@@ -72,6 +62,37 @@ final class LocalizedPage: ObservableObject {
}
}
extension LocalizedPage: LinkPreviewItem {
extension LocalizedPage {
convenience init(context: LoadingContext, data: LocalizedPage.Data) {
self.init(
content: context.content,
urlString: data.url,
title: data.title,
lastModified: data.lastModifiedDate,
originalUrl: data.originalURL,
linkPreview: .init(context: context, data: data.linkPreview),
hideTitle: data.hideTitle ?? false)
}
/// The structure to store the metadata of a localized page
struct Data: Codable {
let url: String
let title: String
let linkPreview: LinkPreview.Data
let lastModifiedDate: Date?
let originalURL: String?
let hideTitle: Bool?
}
var data: Data {
.init(
url: urlString,
title: title,
linkPreview: linkPreview.data,
lastModifiedDate: lastModified,
originalURL: originalUrl,
hideTitle: hideTitle ? true : nil)
}
}