Import old content, load from disk
This commit is contained in:
@ -1,12 +1,15 @@
|
||||
import SwiftUI
|
||||
import Foundation
|
||||
|
||||
final class Post: ObservableObject {
|
||||
|
||||
let id: Int
|
||||
let id: String
|
||||
|
||||
@Published
|
||||
var isDraft: Bool
|
||||
|
||||
@Published
|
||||
var createdDate: Date
|
||||
|
||||
@Published
|
||||
var startDate: Date
|
||||
|
||||
@ -19,33 +22,42 @@ final class Post: ObservableObject {
|
||||
@Published
|
||||
var tags: [Tag]
|
||||
|
||||
let title: LocalizedText
|
||||
@Published
|
||||
var german: LocalizedPost
|
||||
|
||||
let text: LocalizedText
|
||||
|
||||
var images: [ImageResource]
|
||||
@Published
|
||||
var english: LocalizedPost
|
||||
|
||||
/// The page linked to by this post
|
||||
@Published
|
||||
var linkedPage: Page?
|
||||
|
||||
init(id: Int,
|
||||
isDraft: Bool = false,
|
||||
init(id: String,
|
||||
isDraft: Bool,
|
||||
createdDate: Date,
|
||||
startDate: Date,
|
||||
endDate: Date? = nil,
|
||||
title: LocalizedText,
|
||||
text: LocalizedText,
|
||||
endDate: Date?,
|
||||
tags: [Tag],
|
||||
images: [ImageResource]) {
|
||||
german: LocalizedPost,
|
||||
english: LocalizedPost,
|
||||
linkedPage: Page? = nil) {
|
||||
self.id = id
|
||||
self.isDraft = isDraft
|
||||
self.createdDate = createdDate
|
||||
self.startDate = startDate
|
||||
self.hasEndDate = endDate != nil
|
||||
self.endDate = endDate ?? startDate
|
||||
self.title = title
|
||||
self.text = text
|
||||
self.tags = tags
|
||||
self.images = images
|
||||
self.german = german
|
||||
self.english = english
|
||||
self.linkedPage = linkedPage
|
||||
}
|
||||
|
||||
func localized(in language: ContentLanguage) -> LocalizedPost {
|
||||
switch language {
|
||||
case .english: return english
|
||||
case .german: return german
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -142,8 +154,7 @@ extension Post {
|
||||
}
|
||||
|
||||
private func paragraphs(in language: ContentLanguage) -> [String] {
|
||||
text
|
||||
.getText(for: language)
|
||||
localized(in: language).content
|
||||
.components(separatedBy: "\n")
|
||||
.map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
|
||||
.filter { $0 != "" }
|
||||
@ -154,17 +165,16 @@ extension Post {
|
||||
}
|
||||
|
||||
func feedEntry(for language: ContentLanguage) -> FeedEntryData {
|
||||
.init(
|
||||
let post = localized(in: language)
|
||||
return .init(
|
||||
entryId: "\(id)",
|
||||
title: title.getText(for: language),
|
||||
title: post.title,
|
||||
textAboveTitle: dateText(in: language),
|
||||
link: linkToPageInFeed(for: language),
|
||||
tags: tags.map { $0.data(in: language) },
|
||||
text: paragraphs(in: language),
|
||||
images: images.map { $0.feedEntryImage(for: language) })
|
||||
}
|
||||
|
||||
var displayImages: [Image] {
|
||||
images.map { $0.imageToDisplay }
|
||||
images: post.images.map {
|
||||
$0.feedEntryImage(for: language)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user