Skip to content

Commit

Permalink
feat: add experimental always authorization publisher
Browse files Browse the repository at this point in the history
  • Loading branch information
gtokman committed May 5, 2021
1 parent 91f38ce commit fe06db7
Showing 1 changed file with 21 additions and 13 deletions.
34 changes: 21 additions & 13 deletions Sources/ExtensionKit/CoreLocation/CLLocationManager.swift
Expand Up @@ -3,19 +3,6 @@ import CoreLocation

public extension CLLocationManager {

/*
/// Upgrade the user authoriztion status
requestLocationAuthorization()
.flatMap { status -> AnyPublisher<CLAuthorizationStatus, Never> in
if status == CLAuthorizationStatus.authorizedAlways {
return AuthorizationPublisher(manager: manager, authorizationType: type)
.eraseToAnyPublisher()
} else {
return Just(status)
.eraseToAnyPublisher()
}
}
**/
/// Request locaton authorization and subscribe to `CLAuthorizationStatus` updates
/// - Parameters:
/// - manager: `CLLocationManager`
Expand All @@ -29,6 +16,27 @@ public extension CLLocationManager {
.eraseToAnyPublisher()
}

/// Request locaton **always** authorization `CLAuthorizationStatus` with **upgrade** prompt (experimental)
/// - Parameters:
/// - manager: `CLLocationManager`
/// - Returns: Publisher with `AuthorizationType`
static func requestLocationAlwaysAuthorization(
with manager: CLLocationManager = .init()
) -> AnyPublisher<CLAuthorizationStatus, Never> {
AuthorizationPublisher(manager: manager, authorizationType: .always)
.flatMap { status -> AnyPublisher<CLAuthorizationStatus, Never> in
if status == CLAuthorizationStatus.authorizedAlways {
return AuthorizationPublisher(
manager: manager,
authorizationType: .always
)
.eraseToAnyPublisher()
}
return Just(status).eraseToAnyPublisher()
}
.eraseToAnyPublisher()
}

/// Receive location updates from the `CLLocationManager`
/// - Parameter manager: `CLLocationManager`
/// - Returns: Publisher with `[CLLocation]` or `Error`
Expand Down

0 comments on commit fe06db7

Please sign in to comment.