mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-17 15:41:34 +00:00
fix(ci): isolate macOS node restart notifications
This commit is contained in:
@@ -105,6 +105,7 @@ final class MacNodeModeCoordinator: NSObject {
|
||||
private let session: GatewayNodeSession
|
||||
private let nodeHostWorker: (any MacNodeHostWorking)?
|
||||
private let presenceReporter: MacNodePresenceReporter
|
||||
private let notificationCenter: NotificationCenter
|
||||
private let routeInvalidationHook: (@Sendable () async -> Void)?
|
||||
private let refreshEvents: AsyncStream<Void>
|
||||
private let refreshContinuation: AsyncStream<Void>.Continuation
|
||||
@@ -135,6 +136,7 @@ final class MacNodeModeCoordinator: NSObject {
|
||||
runtime: MacNodeRuntime,
|
||||
nodeHostWorker: (any MacNodeHostWorking)? = nil,
|
||||
presenceReporter: MacNodePresenceReporter = MacNodePresenceReporter(),
|
||||
notificationCenter: NotificationCenter = .default,
|
||||
observeNotifications: Bool = false,
|
||||
initialPaused: Bool? = nil,
|
||||
initialComputerControlEnabled: Bool? = nil,
|
||||
@@ -145,6 +147,7 @@ final class MacNodeModeCoordinator: NSObject {
|
||||
self.runtime = runtime
|
||||
self.nodeHostWorker = nodeHostWorker
|
||||
self.presenceReporter = presenceReporter
|
||||
self.notificationCenter = notificationCenter
|
||||
self.routeInvalidationHook = routeInvalidationHook
|
||||
self.refreshEvents = refreshEvents.stream
|
||||
self.refreshContinuation = refreshEvents.continuation
|
||||
@@ -154,32 +157,32 @@ final class MacNodeModeCoordinator: NSObject {
|
||||
super.init()
|
||||
|
||||
guard observeNotifications else { return }
|
||||
NotificationCenter.default.addObserver(
|
||||
self.notificationCenter.addObserver(
|
||||
self,
|
||||
selector: #selector(self.refreshNodeConfiguration),
|
||||
name: UserDefaults.didChangeNotification,
|
||||
object: UserDefaults.standard)
|
||||
NotificationCenter.default.addObserver(
|
||||
self.notificationCenter.addObserver(
|
||||
self,
|
||||
selector: #selector(self.refreshNodeConfiguration),
|
||||
name: NSApplication.didBecomeActiveNotification,
|
||||
object: nil)
|
||||
NotificationCenter.default.addObserver(
|
||||
self.notificationCenter.addObserver(
|
||||
self,
|
||||
selector: #selector(self.refreshNodeConfiguration),
|
||||
name: .openclawPermissionsChanged,
|
||||
object: nil)
|
||||
NotificationCenter.default.addObserver(
|
||||
self.notificationCenter.addObserver(
|
||||
self,
|
||||
selector: #selector(self.nodeHostWorkerFailed),
|
||||
name: .openclawNodeHostWorkerFailed,
|
||||
object: nil)
|
||||
NotificationCenter.default.addObserver(
|
||||
self.notificationCenter.addObserver(
|
||||
self,
|
||||
selector: #selector(self.nodeHostConfigurationChanged),
|
||||
name: .openclawConfigDidChange,
|
||||
object: nil)
|
||||
NotificationCenter.default.addObserver(
|
||||
self.notificationCenter.addObserver(
|
||||
self,
|
||||
selector: #selector(self.nodeHostConfigurationChanged),
|
||||
name: .openclawCLIInstalled,
|
||||
@@ -187,7 +190,7 @@ final class MacNodeModeCoordinator: NSObject {
|
||||
}
|
||||
|
||||
deinit {
|
||||
NotificationCenter.default.removeObserver(self)
|
||||
self.notificationCenter.removeObserver(self)
|
||||
self.refreshContinuation.finish()
|
||||
}
|
||||
|
||||
|
||||
@@ -148,20 +148,22 @@ struct MacNodeModeCoordinatorTests {
|
||||
@Test @MainActor func `config and CLI changes restart startup scoped node host worker`() async throws {
|
||||
let worker = CoordinatorNodeHostWorkerProbe()
|
||||
let session = GatewayNodeSession()
|
||||
let notificationCenter = NotificationCenter()
|
||||
let coordinator = MacNodeModeCoordinator(
|
||||
session: session,
|
||||
runtime: MacNodeRuntime(nodeHostWorker: worker),
|
||||
nodeHostWorker: worker,
|
||||
notificationCenter: notificationCenter,
|
||||
observeNotifications: true)
|
||||
_ = coordinator
|
||||
|
||||
NotificationCenter.default.post(name: .openclawConfigDidChange, object: nil)
|
||||
notificationCenter.post(name: .openclawConfigDidChange, object: nil)
|
||||
|
||||
try await self.waitUntil("node-host worker restart") {
|
||||
await worker.stops() == 1
|
||||
}
|
||||
|
||||
NotificationCenter.default.post(name: .openclawCLIInstalled, object: nil)
|
||||
notificationCenter.post(name: .openclawCLIInstalled, object: nil)
|
||||
|
||||
try await self.waitUntil("node-host worker restart") {
|
||||
await worker.stops() == 2
|
||||
|
||||
Reference in New Issue
Block a user