refactor(apple): share AsyncTimeout helper

This commit is contained in:
Peter Steinberger
2026-01-10 16:22:58 +00:00
parent a1533a17f7
commit 8bc9209094
4 changed files with 25 additions and 42 deletions

View File

@@ -90,20 +90,7 @@ final class LocationService: NSObject, CLLocationManagerDelegate {
timeoutMs: Int,
operation: @escaping @Sendable () async throws -> T) async throws -> T
{
if timeoutMs == 0 {
return try await operation()
}
return try await withThrowingTaskGroup(of: T.self) { group in
group.addTask { try await operation() }
group.addTask {
try await Task.sleep(nanoseconds: UInt64(timeoutMs) * 1_000_000)
throw Error.timeout
}
let result = try await group.next()!
group.cancelAll()
return result
}
try await AsyncTimeout.withTimeoutMs(timeoutMs: timeoutMs, onTimeout: { Error.timeout }, operation: operation)
}
private static func accuracyValue(_ accuracy: ClawdbotLocationAccuracy) -> CLLocationAccuracy {