1
0
mirror of https://github.com/yattee/yattee.git synced 2024-12-12 21:30:32 +05:30
yattee/Model/MenuModel.swift

28 lines
847 B
Swift
Raw Permalink Normal View History

2021-11-09 04:44:28 +05:30
import Combine
import Foundation
final class MenuModel: ObservableObject {
static let shared = MenuModel()
private var cancellables = Set<AnyCancellable>()
2021-11-09 04:44:28 +05:30
init() {
registerChildModel(AccountsModel.shared)
registerChildModel(NavigationModel.shared)
registerChildModel(PlayerModel.shared)
}
2021-11-09 04:44:28 +05:30
func registerChildModel<T: ObservableObject>(_ model: T?) {
guard let model else {
2021-11-09 04:44:28 +05:30
return
}
model.objectWillChange
.receive(on: DispatchQueue.main) // Ensure the update occurs on the main thread
.debounce(for: .milliseconds(10), scheduler: DispatchQueue.main) // Debounce to avoid immediate feedback loops
.sink { [weak self] _ in
self?.objectWillChange.send()
}
.store(in: &cancellables)
2021-11-09 04:44:28 +05:30
}
}