From 7073f63610782614cfdcf10cffcd20cd1ef6ccc9 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 2 Mar 2026 04:36:42 +0000 Subject: [PATCH] fix(ios): enforce main-actor device status APIs --- apps/ios/Sources/Device/DeviceInfoHelper.swift | 2 ++ apps/ios/Sources/Device/DeviceStatusService.swift | 1 + apps/ios/Sources/Services/NodeServiceProtocols.swift | 1 + 3 files changed, 4 insertions(+) diff --git a/apps/ios/Sources/Device/DeviceInfoHelper.swift b/apps/ios/Sources/Device/DeviceInfoHelper.swift index eeed54c4652..7067d70d7e4 100644 --- a/apps/ios/Sources/Device/DeviceInfoHelper.swift +++ b/apps/ios/Sources/Device/DeviceInfoHelper.swift @@ -6,6 +6,7 @@ import Darwin /// Shared device and platform info for Settings, gateway node payloads, and device status. enum DeviceInfoHelper { /// e.g. "iOS 18.0.0" or "iPadOS 18.0.0" by interface idiom. Use for gateway/device payloads. + @MainActor static func platformString() -> String { let v = ProcessInfo.processInfo.operatingSystemVersion let name = switch UIDevice.current.userInterfaceIdiom { @@ -26,6 +27,7 @@ enum DeviceInfoHelper { } /// Device family for display: "iPad", "iPhone", or "iOS". + @MainActor static func deviceFamily() -> String { switch UIDevice.current.userInterfaceIdiom { case .pad: diff --git a/apps/ios/Sources/Device/DeviceStatusService.swift b/apps/ios/Sources/Device/DeviceStatusService.swift index a80a98101fa..bd5b45dfaa1 100644 --- a/apps/ios/Sources/Device/DeviceStatusService.swift +++ b/apps/ios/Sources/Device/DeviceStatusService.swift @@ -2,6 +2,7 @@ import Foundation import OpenClawKit import UIKit +@MainActor final class DeviceStatusService: DeviceStatusServicing { private let networkStatus: NetworkStatusService diff --git a/apps/ios/Sources/Services/NodeServiceProtocols.swift b/apps/ios/Sources/Services/NodeServiceProtocols.swift index 1eba72e7d6a..52121ca762a 100644 --- a/apps/ios/Sources/Services/NodeServiceProtocols.swift +++ b/apps/ios/Sources/Services/NodeServiceProtocols.swift @@ -39,6 +39,7 @@ protocol LocationServicing: Sendable { func stopMonitoringSignificantLocationChanges() } +@MainActor protocol DeviceStatusServicing: Sendable { func status() async throws -> OpenClawDeviceStatusPayload func info() -> OpenClawDeviceInfoPayload