mirror of
https://github.com/hanzoai/bot.git
synced 2026-11-01 07:38:30 +00:00
Automated rebrand of all openclaw references to hanzo bot: - Package: openclaw -> @hanzo/bot - Binary: openclaw -> hanzo-bot - Config: ~/.openclaw -> ~/.hanzo/bot - Docker: ghcr.io/hanzoai/bot - Env vars: OPENCLAW_* -> BOT_* - Bundle IDs: ai.hanzo.bot.* - Product name: Hanzo Bot
43 lines
1.6 KiB
Swift
43 lines
1.6 KiB
Swift
import CoreLocation
|
|
import Foundation
|
|
import Hanzo 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: Hanzo BotLocationMode,
|
|
gateway: GatewayNodeSession,
|
|
beforeSend: (@MainActor @Sendable () async -> Void)? = nil
|
|
) {
|
|
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
|
|
if let beforeSend {
|
|
await beforeSend()
|
|
}
|
|
await gateway.sendEvent(event: "location.update", payloadJSON: json)
|
|
}
|
|
}
|
|
}
|
|
}
|