mirror of
https://github.com/hanzoai/bot.git
synced 2026-10-30 17:24:26 +00:00
Rename all openclaw/claw identifiers, file paths, docs, CI configs, shell scripts, systemd units, Docker helpers, test fixtures, and translation files. Remove stale clawdbot/clawhub paths. Fix pre-commit hook for bash 3 compatibility (macOS). Zero openclaw or claw brand references remain in the working tree.
39 lines
1.4 KiB
Swift
39 lines
1.4 KiB
Swift
import CoreLocation
|
|
import Foundation
|
|
import BotKit
|
|
|
|
/// Monitors significant location changes and pushes `location.update`
|
|
/// events to the gateway so the severance hook can determine whether
|
|
/// the user is at their configured work location.
|
|
@MainActor
|
|
enum SignificantLocationMonitor {
|
|
static func startIfNeeded(
|
|
locationService: any LocationServicing,
|
|
locationMode: BotLocationMode,
|
|
gateway: GatewayNodeSession
|
|
) {
|
|
guard locationMode == .always else { return }
|
|
let status = locationService.authorizationStatus()
|
|
guard status == .authorizedAlways else { return }
|
|
locationService.startMonitoringSignificantLocationChanges { location in
|
|
struct Payload: Codable {
|
|
var lat: Double
|
|
var lon: Double
|
|
var accuracyMeters: Double
|
|
var source: String?
|
|
}
|
|
let payload = Payload(
|
|
lat: location.coordinate.latitude,
|
|
lon: location.coordinate.longitude,
|
|
accuracyMeters: location.horizontalAccuracy,
|
|
source: "ios-significant-location")
|
|
guard let data = try? JSONEncoder().encode(payload),
|
|
let json = String(data: data, encoding: .utf8)
|
|
else { return }
|
|
Task { @MainActor in
|
|
await gateway.sendEvent(event: "location.update", payloadJSON: json)
|
|
}
|
|
}
|
|
}
|
|
}
|