@@ -39,7 +39,6 @@ public final class BluetoothLEManager: NSObject, ObservableObject, IBluetoothLEM
3939 private let cachedServices = CacheServices ( )
4040
4141 private typealias Delegate = BluetoothDelegate
42- private let state = BluetoothLEManager . State ( )
4342 private let stream : StreamFactory
4443 private let delegateHandler : Delegate
4544 private var cancellables : Set < AnyCancellable > = [ ]
@@ -220,27 +219,26 @@ public final class BluetoothLEManager: NSObject, ObservableObject, IBluetoothLEM
220219 getPeripheralPublisher
221220 . sink { [ weak self] peripherals in
222221 guard let self = self else { return }
222+ let stream = self . stream
223223 Task {
224- await self . handlePeripheralChange ( peripherals)
224+ await stream . updatePeripherals ( peripherals)
225225 }
226226 }
227227 . store ( in: & cancellables)
228228
229229 Publishers . CombineLatest ( getStatePublisher, stream. subscriberCountPublisher)
230230 . receiveOnMainAndEraseToAnyPublisher ( )
231231 . sink { [ weak self] state, subscriberCount in
232- guard let self = self else { return }
233- let s = self . checkForScan ( state, subscriberCount)
234- self . bleState. send ( s)
232+ guard let self = self else { return }
233+ let result = self . checkForScan ( state, subscriberCount)
234+ let bleState = self . bleState
235+ Task { @MainActor in
236+ bleState. send ( result)
237+ }
235238 }
236239 . store ( in: & cancellables)
237240 }
238241
239- /// Handles changes in discovered peripherals.
240- private func handlePeripheralChange( _ peripherals: [ CBPeripheral ] ) async {
241- await stream. updatePeripherals ( peripherals)
242- }
243-
244242 /// Checks if Bluetooth is ready (powered on and authorized).
245243 private var checkIfBluetoothReady : Bool {
246244 isAuthorized = State . isBluetoothAuthorized
0 commit comments