Improve page and post detail views

This commit is contained in:
Christoph Hagen
2024-12-07 00:09:35 +01:00
parent 42a5d01480
commit 394cf7a2e4
13 changed files with 355 additions and 109 deletions

View File

@ -23,7 +23,7 @@ extension Content {
linkPreviewDescription: post.linkPreviewDescription)
}
private func convert(_ page: LocalizedPageFile) -> LocalizedPage {
private func convert(_ page: LocalizedPageFile, images: [String : ImageResource]) -> LocalizedPage {
LocalizedPage(
urlString: page.url,
title: page.title,
@ -32,7 +32,7 @@ extension Content {
files: Set(page.files),
externalFiles: Set(page.externalFiles),
requiredFiles: Set(page.requiredFiles),
linkPreviewImage: page.linkPreviewImage,
linkPreviewImage: page.linkPreviewImage.map { images[$0] },
linkPreviewTitle: page.linkPreviewTitle,
linkPreviewDescription: page.linkPreviewDescription)
}
@ -84,7 +84,7 @@ extension Content {
english: convert(data.value.english, images: images))
}
let pages: [String : Page] = loadPages(pagesData, tags: tags)
let pages: [String : Page] = loadPages(pagesData, tags: tags, images: images)
let posts = postsData.map { postId, post in
let linkedPage = post.linkedPageId.map { pages[$0] }
@ -134,7 +134,7 @@ extension Content {
english: convert(settings.english))
}
private func loadPages(_ pagesData: [String : PageFile], tags: [String : Tag]) -> [String : Page] {
private func loadPages(_ pagesData: [String : PageFile], tags: [String : Tag], images: [String : ImageResource]) -> [String : Page] {
pagesData.reduce(into: [:]) { pages, data in
let (pageId, page) = data
pages[pageId] = Page(
@ -143,8 +143,8 @@ extension Content {
createdDate: page.createdDate,
startDate: page.startDate,
endDate: page.endDate,
german: convert(page.german),
english: convert(page.english),
german: convert(page.german, images: images),
english: convert(page.english, images: images),
tags: page.tags.map { tags[$0]! })
}
}

View File

@ -26,7 +26,7 @@ extension Content {
german: image.germanDescription.nonEmpty,
english: image.englishDescription.nonEmpty)
}
storage.save(imageDescriptions: imageDescriptions)
do {
@ -65,7 +65,7 @@ private extension LocalizedPage {
externalFiles: externalFiles.sorted(),
requiredFiles: requiredFiles.sorted(),
title: title,
linkPreviewImage: linkPreviewImage,
linkPreviewImage: linkPreviewImage?.id,
linkPreviewTitle: linkPreviewTitle,
linkPreviewDescription: linkPreviewDescription,
lastModifiedDate: lastModified,

View File

@ -56,7 +56,7 @@ final class LocalizedPage: ObservableObject {
var requiredFiles: Set<String> = []
@Published
var linkPreviewImage: String?
var linkPreviewImage: ImageResource?
@Published
var linkPreviewTitle: String?
@ -71,7 +71,7 @@ final class LocalizedPage: ObservableObject {
files: Set<String> = [],
externalFiles: Set<String> = [],
requiredFiles: Set<String> = [],
linkPreviewImage: String? = nil,
linkPreviewImage: ImageResource? = nil,
linkPreviewTitle: String? = nil,
linkPreviewDescription: String? = nil) {
self.urlString = urlString