ChWebsiteApp/CHDataManagement/Storage/ChangeObservableItem.swift
2025-02-05 12:24:33 +01:00

32 lines
557 B
Swift

import Combine
protocol ChangeObservableItem: ObservableObject {
var cancellables: Set<AnyCancellable> { get set }
func needsSaving()
}
protocol ObservableContentItem: ChangeObservableItem {
var content: Content { get }
}
extension ObservableContentItem {
func needsSaving() {
content.needsSave()
}
}
extension ChangeObservableItem {
func observeChanges() {
objectWillChange
.sink { [weak self] _ in
self?.needsSaving()
}
.store(in: &cancellables)
}
}