Sort file lists for consistent storage
This commit is contained in:
parent
8ae2a237cc
commit
cb22ae34f2
@ -219,9 +219,9 @@ final class Importer {
|
||||
}
|
||||
let page = LocalizedPageFile(
|
||||
url: id,
|
||||
files: pageFiles,
|
||||
externalFiles: externalFiles,
|
||||
requiredFiles: requiredFiles,
|
||||
files: pageFiles.sorted(),
|
||||
externalFiles: externalFiles.sorted(),
|
||||
requiredFiles: requiredFiles.sorted(),
|
||||
title: content.title!,
|
||||
linkPreviewImage: thumbnail?.name,
|
||||
linkPreviewTitle: content.linkPreviewTitle,
|
||||
@ -320,7 +320,7 @@ final class Importer {
|
||||
let images = page.linkPreviewImage.map { [$0] } ?? []
|
||||
|
||||
return LocalizedPostFile(
|
||||
images: Set(images),
|
||||
images: images.sorted(),
|
||||
title: page.linkPreviewTitle ?? page.title,
|
||||
content: content,
|
||||
lastModifiedDate: nil)
|
||||
|
@ -255,23 +255,31 @@ final class Content: ObservableObject {
|
||||
private func loadPages(_ pagesData: [String : PageFile], tags: [String : Tag]) -> [String : Page] {
|
||||
pagesData.reduce(into: [:]) { pages, data in
|
||||
let (pageId, page) = data
|
||||
let german = page.german
|
||||
let germanPage = LocalizedPage(
|
||||
urlString: page.german.url,
|
||||
title: page.german.title,
|
||||
lastModified: page.german.lastModifiedDate,
|
||||
originalUrl: page.german.originalURL,
|
||||
files: page.german.files,
|
||||
externalFiles: page.german.externalFiles,
|
||||
requiredFiles: page.german.requiredFiles)
|
||||
urlString: german.url,
|
||||
title: german.title,
|
||||
lastModified: german.lastModifiedDate,
|
||||
originalUrl: german.originalURL,
|
||||
files: Set(german.files),
|
||||
externalFiles: Set(german.externalFiles),
|
||||
requiredFiles: Set(german.requiredFiles),
|
||||
linkPreviewImage: german.linkPreviewImage,
|
||||
linkPreviewTitle: german.linkPreviewTitle,
|
||||
linkPreviewDescription: german.linkPreviewDescription)
|
||||
|
||||
let english = page.english
|
||||
let englishPage = LocalizedPage(
|
||||
urlString: page.english.url,
|
||||
title: page.english.title,
|
||||
lastModified: page.english.lastModifiedDate,
|
||||
originalUrl: page.english.originalURL,
|
||||
files: page.english.files,
|
||||
externalFiles: page.english.externalFiles,
|
||||
requiredFiles: page.english.requiredFiles)
|
||||
urlString: english.url,
|
||||
title: english.title,
|
||||
lastModified: english.lastModifiedDate,
|
||||
originalUrl: english.originalURL,
|
||||
files: Set(english.files),
|
||||
externalFiles: Set(english.externalFiles),
|
||||
requiredFiles: Set(english.requiredFiles),
|
||||
linkPreviewImage: english.linkPreviewImage,
|
||||
linkPreviewTitle: english.linkPreviewTitle,
|
||||
linkPreviewDescription: english.linkPreviewDescription)
|
||||
|
||||
pages[pageId] = Page(
|
||||
id: pageId,
|
||||
|
@ -55,13 +55,25 @@ final class LocalizedPage: ObservableObject {
|
||||
@Published
|
||||
var requiredFiles: Set<String> = []
|
||||
|
||||
@Published
|
||||
var linkPreviewImage: String?
|
||||
|
||||
@Published
|
||||
var linkPreviewTitle: String?
|
||||
|
||||
@Published
|
||||
var linkPreviewDescription: String?
|
||||
|
||||
init(urlString: String,
|
||||
title: String,
|
||||
lastModified: Date? = nil,
|
||||
originalUrl: String? = nil,
|
||||
files: Set<String> = [],
|
||||
externalFiles: Set<String> = [],
|
||||
requiredFiles: Set<String> = []) {
|
||||
requiredFiles: Set<String> = [],
|
||||
linkPreviewImage: String? = nil,
|
||||
linkPreviewTitle: String? = nil,
|
||||
linkPreviewDescription: String? = nil) {
|
||||
self.urlString = urlString
|
||||
self.title = title
|
||||
self.lastModified = lastModified
|
||||
@ -69,6 +81,9 @@ final class LocalizedPage: ObservableObject {
|
||||
self.files = files
|
||||
self.externalFiles = externalFiles
|
||||
self.requiredFiles = requiredFiles
|
||||
self.linkPreviewImage = linkPreviewImage
|
||||
self.linkPreviewTitle = linkPreviewTitle
|
||||
self.linkPreviewDescription = linkPreviewDescription
|
||||
}
|
||||
|
||||
@MainActor
|
||||
|
30
CHDataManagement/Model/Page+Storage.swift
Normal file
30
CHDataManagement/Model/Page+Storage.swift
Normal file
@ -0,0 +1,30 @@
|
||||
import Foundation
|
||||
|
||||
extension Page {
|
||||
|
||||
var pageFile: PageFile {
|
||||
.init(isDraft: isDraft,
|
||||
tags: tags.map { $0.id },
|
||||
createdDate: createdDate,
|
||||
startDate: startDate,
|
||||
endDate: hasEndDate ? endDate : nil,
|
||||
german: german.pageFile,
|
||||
english: english.pageFile)
|
||||
}
|
||||
}
|
||||
|
||||
extension LocalizedPage {
|
||||
|
||||
var pageFile: LocalizedPageFile {
|
||||
.init(url: urlString,
|
||||
files: files.sorted(),
|
||||
externalFiles: externalFiles.sorted(),
|
||||
requiredFiles: requiredFiles.sorted(),
|
||||
title: title,
|
||||
linkPreviewImage: linkPreviewImage,
|
||||
linkPreviewTitle: linkPreviewTitle,
|
||||
linkPreviewDescription: linkPreviewDescription,
|
||||
lastModifiedDate: lastModified,
|
||||
originalURL: originalUrl)
|
||||
}
|
||||
}
|
@ -31,18 +31,18 @@ struct LocalizedPageFile {
|
||||
/**
|
||||
The files (images, videos, other files) used in the page.
|
||||
*/
|
||||
let files: Set<String>
|
||||
let files: [String]
|
||||
|
||||
/**
|
||||
The additional files required for the page to function correctly, but which are not stored with the content.
|
||||
*/
|
||||
let externalFiles: Set<String>
|
||||
let externalFiles: [String]
|
||||
|
||||
/**
|
||||
Specifies additional files which should be copied to the destination when generating the content.
|
||||
- Note: This property defaults to an empty set.
|
||||
*/
|
||||
let requiredFiles: Set<String>
|
||||
let requiredFiles: [String]
|
||||
|
||||
let title: String
|
||||
|
||||
|
@ -28,7 +28,7 @@ extension PostFile: Codable {
|
||||
*/
|
||||
struct LocalizedPostFile {
|
||||
|
||||
let images: Set<String>
|
||||
let images: [String]
|
||||
|
||||
let title: String?
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user