HeartbeatStore: fix main-actor cleanup

This commit is contained in:
Peter Steinberger
2025-12-08 20:17:38 +01:00
parent 34f892ae82
commit e3089d60ea

View File

@@ -0,0 +1,29 @@
import Foundation
import SwiftUI
@MainActor
final class HeartbeatStore: ObservableObject {
static let shared = HeartbeatStore()
@Published private(set) var lastEvent: AgentRPC.HeartbeatEvent?
private var observer: NSObjectProtocol?
private init() {
self.observer = NotificationCenter.default.addObserver(
forName: AgentRPC.heartbeatNotification,
object: nil,
queue: .main
) { [weak self] note in
guard let event = note.object as? AgentRPC.HeartbeatEvent else { return }
Task { @MainActor in
self?.lastEvent = event
}
}
}
@MainActor
deinit {
if let observer { NotificationCenter.default.removeObserver(observer) }
}
}