diff --git a/LeadKit/LeadKit/Extensions/Alamofire/AlamofireManager+Extensions.swift b/LeadKit/LeadKit/Extensions/Alamofire/AlamofireManager+Extensions.swift index f48d09bb..f44856a3 100644 --- a/LeadKit/LeadKit/Extensions/Alamofire/AlamofireManager+Extensions.swift +++ b/LeadKit/LeadKit/Extensions/Alamofire/AlamofireManager+Extensions.swift @@ -31,7 +31,6 @@ public extension Reactive where Base: Alamofire.SessionManager { /// - Returns: Observable with HTTP URL Response and target object func responseModel(requestParameters: ApiRequestParameters) -> Observable<(HTTPURLResponse, T)> { return apiRequest(requestParameters: requestParameters) - .observeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated)) .flatMap { $0.rx.apiResponse() } } @@ -43,7 +42,6 @@ public extension Reactive where Base: Alamofire.SessionManager { Observable<(HTTPURLResponse, T)> where T.ModelType == T { return apiRequest(requestParameters: requestParameters) - .observeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated)) .flatMap { $0.rx.apiResponse() } } diff --git a/LeadKit/LeadKit/Extensions/Alamofire/AlamofireRequest+Extensions.swift b/LeadKit/LeadKit/Extensions/Alamofire/AlamofireRequest+Extensions.swift index cf33202d..3477163d 100644 --- a/LeadKit/LeadKit/Extensions/Alamofire/AlamofireRequest+Extensions.swift +++ b/LeadKit/LeadKit/Extensions/Alamofire/AlamofireRequest+Extensions.swift @@ -15,25 +15,33 @@ public extension Reactive where Base: DataRequest { /// Method which serializes response into target object /// + /// - Parameter mappingQueueQoS: QoS of underlying scheduler queue on which mapping will be executed /// - Returns: Observable with HTTP URL Response and target object - func apiResponse() -> Observable<(HTTPURLResponse, T)> { - return responseJSON().map { resp, value in - let json = try cast(value) as [String: Any] + func apiResponse(mappingQueueQoS: DispatchQoS = .default) -> Observable<(HTTPURLResponse, T)> { + return responseJSON() + .map { resp, value in + let json = try cast(value) as [String: Any] - return (resp, try T(JSON: json)) - } + return (resp, try T(JSON: json)) + } + .subscribeOn(ConcurrentDispatchQueueScheduler(qos: mappingQueueQoS)) } /// Method which serializes response into target object /// + /// - Parameter mappingQueueQoS: QoS of underlying scheduler queue on which mapping will be executed /// - Returns: Observable with HTTP URL Response and target object - func apiResponse() -> Observable<(HTTPURLResponse, T)> where T.ModelType == T { - return responseJSON().flatMap { resp, value -> Observable<(HTTPURLResponse, T)> in - let json = try cast(value) as [String: Any] + func apiResponse(mappingQueueQoS: DispatchQoS = .default) -> Observable<(HTTPURLResponse, T)> + where T.ModelType == T { - return T.createFrom(map: Map(mappingType: .fromJSON, JSON: json)) - .map { (resp, $0) } - } + return responseJSON() + .flatMap { resp, value -> Observable<(HTTPURLResponse, T)> in + let json = try cast(value) as [String: Any] + + return T.createFrom(map: Map(mappingType: .fromJSON, JSON: json)) + .map { (resp, $0) } + .subscribeOn(ConcurrentDispatchQueueScheduler(qos: mappingQueueQoS)) + } } }