Load incomplete content, show errors

This commit is contained in:
Christoph Hagen
2025-02-05 20:56:02 +01:00
parent 2b88584ba1
commit d556a51228
9 changed files with 142 additions and 118 deletions

View File

@@ -4,9 +4,6 @@ import Combine
final class Content: ObservableObject {
@Published
var didLoadContent = false
@ObservedObject
var storage: Storage
@@ -132,31 +129,37 @@ final class Content: ObservableObject {
func loadFromDisk(callback: @escaping () -> ()) {
DispatchQueue.global().async {
let loader = ModelLoader(content: self, storage: self.storage)
let result = loader.load()
guard result.errors.isEmpty else {
DispatchQueue.main.async {
self.didLoadContent = false
self.storageErrors.append(contentsOf: result.errors)
callback()
}
return
}
DispatchQueue.main.async {
self.files = result.files
self.posts = result.posts
self.pages = result.pages
self.tags = result.tags
self.settings = result.settings
self.tagOverview = result.tagOverview
self.didLoadContent = true
callback()
self.generateMissingVideoThumbnails()
}
self.loadInBackground(callback: callback)
}
}
private func loadInBackground(callback: @escaping () -> ()) {
let loader = ModelLoader(content: self, storage: self.storage)
let result = loader.load()
DispatchQueue.main.async {
self.files = result.files
self.posts = result.posts
self.pages = result.pages
self.tags = result.tags
self.settings = result.settings
self.tagOverview = result.tagOverview
self.storageErrors.append(contentsOf: result.errors)
if !result.errors.isEmpty {
self.saveState = .savingPausedDueToLoadErrors
} else {
self.saveState = .isSaved
}
callback()
self.generateMissingVideoThumbnails()
}
}
func resumeSavingAfterLoadingErrors() {
saveState = .needsSave
saveIfNeeded()
}
func generateMissingVideoThumbnails() {
Task {
for file in self.files {