Rework storage structs, link preview
This commit is contained in:
@ -30,25 +30,6 @@ final class Settings: ObservableObject {
|
||||
self.audioPlayer = audioPlayer
|
||||
}
|
||||
|
||||
init(file: SettingsFile, files: [String : FileResource], map: (String) -> Item?) {
|
||||
self.navigation = NavigationSettings(file: file.navigation, map: map)
|
||||
|
||||
self.posts = PostSettings(file: file.posts, files: files)
|
||||
self.pages = PageSettings(file: file.pages, files: files)
|
||||
self.paths = PathSettings(file: file.paths)
|
||||
self.audioPlayer = .init(file: file.audioPlayer, files: files)
|
||||
}
|
||||
|
||||
func file(tagOverview: TagOverviewPage?) -> SettingsFile {
|
||||
.init(
|
||||
paths: paths.file,
|
||||
navigation: navigation.file,
|
||||
posts: posts.file,
|
||||
pages: pages.file,
|
||||
audioPlayer: audioPlayer.file,
|
||||
tagOverview: tagOverview?.file)
|
||||
}
|
||||
|
||||
func remove(_ file: FileResource) {
|
||||
pages.remove(file)
|
||||
posts.remove(file)
|
||||
@ -56,6 +37,39 @@ final class Settings: ObservableObject {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Storage
|
||||
|
||||
extension Settings {
|
||||
|
||||
convenience init(context: LoadingContext, data: Settings.Data) {
|
||||
self.init(
|
||||
paths: .init(data: data.paths),
|
||||
navigation: .init(context: context, data: data.navigation),
|
||||
posts: .init(context: context, data: data.posts),
|
||||
pages: .init(context: context, data: data.pages),
|
||||
audioPlayer: .init(context: context, data: data.audioPlayer))
|
||||
}
|
||||
|
||||
func data(tagOverview: Tag?) -> Data {
|
||||
.init(
|
||||
paths: paths.data,
|
||||
navigation: navigation.data,
|
||||
posts: posts.data,
|
||||
pages: pages.data,
|
||||
audioPlayer: audioPlayer.data,
|
||||
tagOverview: tagOverview?.data)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
let paths: PathSettings.Data
|
||||
let navigation: NavigationSettings.Data
|
||||
let posts: PostSettings.Data
|
||||
let pages: PageSettings.Data
|
||||
let audioPlayer: AudioPlayerSettings.Data
|
||||
let tagOverview: Tag.Data?
|
||||
}
|
||||
}
|
||||
|
||||
extension Settings {
|
||||
|
||||
static let `default`: Settings = .init(
|
||||
@ -65,3 +79,70 @@ extension Settings {
|
||||
pages: .default,
|
||||
audioPlayer: .default)
|
||||
}
|
||||
|
||||
extension AudioPlayerSettings {
|
||||
|
||||
static let `default`: AudioPlayerSettings = .init(
|
||||
playlistCoverImageSize: 280,
|
||||
smallCoverImageSize: 78,
|
||||
audioPlayerJsFile: nil,
|
||||
audioPlayerCssFile: nil,
|
||||
german: .init(playlistText: "Wiedergabeliste"),
|
||||
english: .init(playlistText: "Playlist"))
|
||||
}
|
||||
|
||||
extension PostSettings {
|
||||
|
||||
static var `default`: PostSettings {
|
||||
.init(postsPerPage: 25,
|
||||
contentWidth: 600,
|
||||
swiperCssFile: nil,
|
||||
swiperJsFile: nil,
|
||||
defaultCssFile: nil,
|
||||
german: .init(
|
||||
title: "Beiträge",
|
||||
description: "Alle Beiträge",
|
||||
feedUrlPrefix: "blog",
|
||||
defaultPageLinkText: "Anzeigen"),
|
||||
english: .init(
|
||||
title: "Blog posts",
|
||||
description: "All blog posts",
|
||||
feedUrlPrefix: "blog",
|
||||
defaultPageLinkText: "View"))
|
||||
}
|
||||
}
|
||||
|
||||
extension PathSettings {
|
||||
|
||||
static var `default`: PathSettings {
|
||||
.init(
|
||||
assetsOutputFolderPath: "asset",
|
||||
pagesOutputFolderPath: "page",
|
||||
imagesOutputFolderPath: "image",
|
||||
filesOutputFolderPath: "file",
|
||||
videosOutputFolderPath: "video",
|
||||
audioOutputFolderPath: "audio",
|
||||
tagsOutputFolderPath: "tag")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension PageSettings {
|
||||
|
||||
static var `default`: PageSettings {
|
||||
.init(contentWidth: 600,
|
||||
largeImageWidth: 1200,
|
||||
pageLinkImageSize: 180,
|
||||
defaultCssFile: nil,
|
||||
codeHighlightingJsFile: nil,
|
||||
modelViewerJsFile: nil,
|
||||
imageCompareJsFile: nil,
|
||||
imageCompareCssFile: nil,
|
||||
german: .init(
|
||||
emptyPageTitle: "Leere Seite",
|
||||
emptyPageText: "Diese Seite ist leer"),
|
||||
english: .init(
|
||||
emptyPageTitle: "Empty page",
|
||||
emptyPageText: "This page is empty"))
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user