// super rusty on combine // https://brightdigit.com/tutorials/combine-corelocation-publishers-delegates/ class CLLocationManagerPublicist: NSObject, CLLocationManagerCombineDelegate { ... let locationSubject = PassthroughSubject<[CLLocation], Never>() func locationPublisher() -> AnyPublisher<[CLLocation], Never> { return locationSubject.eraseToAnyPublisher() } func locationManager(_: CLLocationManager, didUpdateLocations locations: [CLLocation]) { locationSubject.send(locations) } ... } func authorizationPublisher() -> AnyPublisher { return Just(CLLocationManager.authorizationStatus()) .merge(with: authorizationSubject.compactMap { $0 } ).eraseToAnyPublisher() }