Save changes to settings

This commit is contained in:
Christoph Hagen
2025-06-29 19:16:11 +02:00
parent 5ac8991c48
commit ba6097a67b
2 changed files with 18 additions and 0 deletions

View File

@@ -38,6 +38,7 @@ final class Settings: ChangeObservableItem {
self.posts = posts self.posts = posts
self.pages = pages self.pages = pages
self.audioPlayer = audioPlayer self.audioPlayer = audioPlayer
observeChildChanges()
} }
func remove(_ file: FileResource) { func remove(_ file: FileResource) {
@@ -49,6 +50,15 @@ final class Settings: ChangeObservableItem {
func needsSaving() { func needsSaving() {
content?.needsSave() content?.needsSave()
} }
private func observeChildChanges() {
observe(general)
observe(paths)
observe(navigation)
observe(posts)
observe(pages)
observe(audioPlayer)
}
} }
// MARK: Storage // MARK: Storage

View File

@@ -16,6 +16,14 @@ extension ChangeObservableItem {
} }
.store(in: &cancellables) .store(in: &cancellables)
} }
func observe<T>(_ object: T) where T: ObservableObject {
object.objectWillChange
.sink { [weak self] _ in
self?.needsSaving()
}
.store(in: &cancellables)
}
} }
protocol ObservableContentItem: ChangeObservableItem { protocol ObservableContentItem: ChangeObservableItem {