mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Location Picker fixes
This commit is contained in:
38
submodules/DeviceAccess/Sources/LocationManager.swift
Normal file
38
submodules/DeviceAccess/Sources/LocationManager.swift
Normal file
@@ -0,0 +1,38 @@
|
||||
import Foundation
|
||||
import CoreLocation
|
||||
|
||||
public final class LocationManager: NSObject, CLLocationManagerDelegate {
|
||||
public let manager = CLLocationManager()
|
||||
var pendingCompletion: ((CLAuthorizationStatus) -> Void, CLAuthorizationStatus)?
|
||||
|
||||
public override init() {
|
||||
super.init()
|
||||
self.manager.delegate = self
|
||||
}
|
||||
|
||||
func requestWhenInUseAuthorization(completion: @escaping (CLAuthorizationStatus) -> Void) {
|
||||
let status = CLLocationManager.authorizationStatus()
|
||||
if status == .notDetermined {
|
||||
self.manager.requestWhenInUseAuthorization()
|
||||
self.pendingCompletion = (completion, .authorizedWhenInUse)
|
||||
} else {
|
||||
completion(status)
|
||||
}
|
||||
}
|
||||
|
||||
func requestAlwaysAuthorization(completion: @escaping (CLAuthorizationStatus) -> Void) {
|
||||
let status = CLLocationManager.authorizationStatus()
|
||||
if status == .notDetermined {
|
||||
self.manager.requestWhenInUseAuthorization()
|
||||
self.pendingCompletion = (completion, .authorizedAlways)
|
||||
} else {
|
||||
completion(status)
|
||||
}
|
||||
}
|
||||
|
||||
public func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
|
||||
if let (pendingCompletion, _) = self.pendingCompletion {
|
||||
pendingCompletion(status)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user