From 96c0a75c2f43034d3072ec6ce737a523ca1a8f6a Mon Sep 17 00:00:00 2001 From: Christoph Hagen Date: Mon, 6 Jan 2025 11:01:02 +0100 Subject: [PATCH] Integrate tag overview into settings file --- CHDataManagement/Model/Content+Load.swift | 5 +---- CHDataManagement/Model/Content+Save.swift | 3 +-- CHDataManagement/Model/Settings/Settings.swift | 3 ++- .../Storage/Model/Settings/SettingsFile.swift | 3 +++ CHDataManagement/Storage/Storage.swift | 13 ------------- 5 files changed, 7 insertions(+), 20 deletions(-) diff --git a/CHDataManagement/Model/Content+Load.swift b/CHDataManagement/Model/Content+Load.swift index 16aac72..434d1a8 100644 --- a/CHDataManagement/Model/Content+Load.swift +++ b/CHDataManagement/Model/Content+Load.swift @@ -76,9 +76,6 @@ extension Content { let externalFiles = storage.loadExternalFileList() ?? [] if externalFiles.isEmpty { print("No external files loaded") } - let tagOverviewData = storage.loadTagOverview() - if tagOverviewData == nil { print("No tag overview loaded") } - print("Loaded data from disk, processing...") // All data loaded from storage, start constructing the data model @@ -134,7 +131,7 @@ extension Content { linkedPage: linkedPage) } - let tagOverview = tagOverviewData.map { file in + let tagOverview = settings.tagOverview.map { file in TagOverviewPage( content: self, german: .init(content: self, file: file.german, image: file.german.linkPreviewImage.map { files[$0] }), diff --git a/CHDataManagement/Model/Content+Save.swift b/CHDataManagement/Model/Content+Save.swift index d3c963e..41522e4 100644 --- a/CHDataManagement/Model/Content+Save.swift +++ b/CHDataManagement/Model/Content+Save.swift @@ -12,7 +12,7 @@ extension Content { failedSaves += pages.count { !storage.save(pageMetadata: $0.pageFile, for: $0.id) } failedSaves += posts.count { !storage.save(post: $0.postFile, for: $0.id) } failedSaves += tags.count { !storage.save(tagMetadata: $0.file, for: $0.id) } - failedSaves.increment(!storage.save(settings: settings.file)) + failedSaves.increment(!storage.save(settings: settings.file(tagOverview: tagOverview))) let fileDescriptions: [FileDescriptions] = files.sorted().compactMap { file in guard !file.english.isEmpty || !file.german.isEmpty else { @@ -25,7 +25,6 @@ extension Content { } failedSaves.increment(!storage.save(fileDescriptions: fileDescriptions)) - failedSaves.increment(!storage.save(tagOverview: tagOverview?.file)) let externalFileList = files.filter { $0.isExternallyStored }.map { $0.id } failedSaves.increment(!storage.save(externalFileList: externalFileList)) diff --git a/CHDataManagement/Model/Settings/Settings.swift b/CHDataManagement/Model/Settings/Settings.swift index 9ac1161..9d75ff4 100644 --- a/CHDataManagement/Model/Settings/Settings.swift +++ b/CHDataManagement/Model/Settings/Settings.swift @@ -60,13 +60,14 @@ final class Settings: ObservableObject { self.english = .init(file: file.english) } - var file: SettingsFile { + func file(tagOverview: TagOverviewPage?) -> SettingsFile { .init( paths: paths.file, navigation: navigation.file, posts: posts.file, pages: pages.file, audioPlayer: audioPlayer.file, + tagOverview: tagOverview?.file, german: german.file, english: english.file) } diff --git a/CHDataManagement/Storage/Model/Settings/SettingsFile.swift b/CHDataManagement/Storage/Model/Settings/SettingsFile.swift index 8f746e9..e0b8ccd 100644 --- a/CHDataManagement/Storage/Model/Settings/SettingsFile.swift +++ b/CHDataManagement/Storage/Model/Settings/SettingsFile.swift @@ -13,6 +13,8 @@ struct SettingsFile { let audioPlayer: AudioPlayerSettingsFile + let tagOverview: TagOverviewFile? + let german: LocalizedPostSettingsFile let english: LocalizedPostSettingsFile @@ -29,6 +31,7 @@ extension SettingsFile { posts: .default, pages: .default, audioPlayer: AudioPlayerSettings.default.file, + tagOverview: nil, german: .default, english: .default ) diff --git a/CHDataManagement/Storage/Storage.swift b/CHDataManagement/Storage/Storage.swift index 2881d0d..80795c0 100644 --- a/CHDataManagement/Storage/Storage.swift +++ b/CHDataManagement/Storage/Storage.swift @@ -34,8 +34,6 @@ final class Storage: ObservableObject { private let settingsDataFileName = "settings.json" - private let tagOverviewFileName = "tag-overview.json" - private let contentPathBookmarkKey = "contentPathBookmark" // MARK: Properties @@ -227,17 +225,6 @@ final class Storage: ObservableObject { return contentScope.encode(fileDescriptions, to: fileDescriptionFilename) } - // MARK: Tag overview - - func loadTagOverview() -> TagOverviewFile? { - contentScope?.decode(at: tagOverviewFileName) - } - - func save(tagOverview: TagOverviewFile?) -> Bool { - guard let contentScope else { return false } - return contentScope.encode(tagOverview, to: tagOverviewFileName) - } - // MARK: Files func size(of file: String) -> Int? {