Improve post entry views, add post link data

This commit is contained in:
Christoph Hagen
2024-11-30 08:34:31 +01:00
parent fd1f1f4c40
commit f1e1538167
18 changed files with 567 additions and 101 deletions

View File

@@ -0,0 +1,8 @@
import Foundation
extension Content {
func generateWebsite(into folder: URL) throws {
}
}

View File

@@ -221,17 +221,26 @@ final class Content: ObservableObject {
let posts = postsData.map { postId, post in
let linkedPage = post.linkedPageId.map { pages[$0] }
let german = LocalizedPost(
title: post.german.title,
content: post.german.content,
lastModified: post.german.lastModifiedDate,
images: post.german.images.compactMap { images[$0] })
let germanData = post.german
let german = LocalizedPost(
title: germanData.title,
content: germanData.content,
lastModified: germanData.lastModifiedDate,
images: germanData.images.compactMap { images[$0] },
linkPreviewImage: germanData.linkPreviewImage.map { images[$0] },
linkPreviewTitle: germanData.linkPreviewTitle,
linkPreviewDescription: germanData.linkPreviewDescription)
let englishData = post.english
let english = LocalizedPost(
title: post.english.title,
content: post.english.content,
lastModified: post.english.lastModifiedDate,
images: post.english.images.compactMap { images[$0] })
title: englishData.title,
content: englishData.content,
lastModified: englishData.lastModifiedDate,
images: englishData.images.compactMap { images[$0] },
linkPreviewImage: englishData.linkPreviewImage.map { images[$0] },
linkPreviewTitle: englishData.linkPreviewTitle,
linkPreviewDescription: englishData.linkPreviewDescription)
return Post(
id: postId,

View File

@@ -15,14 +15,29 @@ final class LocalizedPost: ObservableObject {
@Published
var images: [ImageResource]
@Published
var linkPreviewImage: ImageResource?
@Published
var linkPreviewTitle: String?
@Published
var linkPreviewDescription: String?
init(title: String? = nil,
content: String,
lastModified: Date? = nil,
images: [ImageResource] = []) {
images: [ImageResource] = [],
linkPreviewImage: ImageResource? = nil,
linkPreviewTitle: String? = nil,
linkPreviewDescription: String? = nil) {
self.title = title ?? ""
self.content = content
self.lastModified = lastModified
self.images = images
self.linkPreviewImage = linkPreviewImage
self.linkPreviewTitle = linkPreviewTitle
self.linkPreviewDescription = linkPreviewDescription
}
@MainActor

View File

@@ -21,6 +21,9 @@ extension LocalizedPost {
.init(images: images.map { $0.id },
title: title.nonEmpty,
content: content,
lastModifiedDate: lastModified)
lastModifiedDate: lastModified,
linkPreviewImage: linkPreviewImage?.id,
linkPreviewTitle: linkPreviewTitle,
linkPreviewDescription: linkPreviewDescription)
}
}

View File

@@ -2,7 +2,8 @@ import Foundation
final class Post: ObservableObject {
let id: String
@Published
var id: String
@Published
var isDraft: Bool