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

@ -32,30 +32,26 @@ final class PageSettings: ObservableObject {
@Published
var english: LocalizedPageSettings
init(file: PageSettingsFile, files: [String : FileResource]) {
self.contentWidth = file.contentWidth
self.largeImageWidth = file.largeImageWidth
self.pageLinkImageSize = file.pageLinkImageSize
self.defaultCssFile = file.defaultCssFile.map { files[$0] }
self.codeHighlightingJsFile = file.codeHighlightingJsFile.map { files[$0] }
self.modelViewerJsFile = file.modelViewerJsFile.map { files[$0] }
self.imageCompareCssFile = file.imageCompareCssFile.map { files[$0] }
self.imageCompareJsFile = file.imageCompareJsFile.map { files[$0] }
self.german = .init(file: file.german)
self.english = .init(file: file.english)
}
var file: PageSettingsFile {
.init(contentWidth: contentWidth,
largeImageWidth: largeImageWidth,
pageLinkImageSize: pageLinkImageSize,
defaultCssFile: defaultCssFile?.id,
codeHighlightingJsFile: codeHighlightingJsFile?.id,
modelViewerJsFile: modelViewerJsFile?.id,
imageCompareJsFile: imageCompareJsFile?.id,
imageCompareCssFile: imageCompareCssFile?.id,
german: german.file,
english: english.file)
init(contentWidth: Int,
largeImageWidth: Int,
pageLinkImageSize: Int,
defaultCssFile: FileResource? = nil,
codeHighlightingJsFile: FileResource? = nil,
modelViewerJsFile: FileResource? = nil,
imageCompareJsFile: FileResource? = nil,
imageCompareCssFile: FileResource? = nil,
german: LocalizedPageSettings,
english: LocalizedPageSettings) {
self.contentWidth = contentWidth
self.largeImageWidth = largeImageWidth
self.pageLinkImageSize = pageLinkImageSize
self.defaultCssFile = defaultCssFile
self.codeHighlightingJsFile = codeHighlightingJsFile
self.modelViewerJsFile = modelViewerJsFile
self.imageCompareJsFile = imageCompareJsFile
self.imageCompareCssFile = imageCompareCssFile
self.german = german
self.english = english
}
func remove(_ file: FileResource) {
@ -77,6 +73,52 @@ final class PageSettings: ObservableObject {
}
}
// MARK: Storage
extension PageSettings {
convenience init(context: LoadingContext, data: Data) {
self.init(
contentWidth: data.contentWidth,
largeImageWidth: data.largeImageWidth,
pageLinkImageSize: data.pageLinkImageSize,
defaultCssFile: data.defaultCssFile.map(context.file),
codeHighlightingJsFile: data.codeHighlightingJsFile.map(context.file),
modelViewerJsFile: data.modelViewerJsFile.map(context.file),
imageCompareJsFile: data.imageCompareJsFile.map(context.file),
imageCompareCssFile: data.imageCompareCssFile.map(context.file),
german: .init(data: data.german),
english: .init(data: data.english))
}
var data: Data {
.init(contentWidth: contentWidth,
largeImageWidth: largeImageWidth,
pageLinkImageSize: pageLinkImageSize,
defaultCssFile: defaultCssFile?.id,
codeHighlightingJsFile: codeHighlightingJsFile?.id,
modelViewerJsFile: modelViewerJsFile?.id,
imageCompareJsFile: imageCompareJsFile?.id,
imageCompareCssFile: imageCompareCssFile?.id,
german: german.data,
english: english.data)
}
struct Data: Codable {
let contentWidth: Int
let largeImageWidth: Int
let pageLinkImageSize: Int
let defaultCssFile: String?
let codeHighlightingJsFile: String?
let modelViewerJsFile: String?
let imageCompareJsFile: String?
let imageCompareCssFile: String?
let german: LocalizedPageSettings.Data
let english: LocalizedPageSettings.Data
}
}
extension PageSettings: LocalizedItem {
}