обработка ответа сервера rxswift - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть приложение, которое подключается к API, состояние API может быть в случае успеха или в случае ошибки, приложение работало до недавнего времени, у нас была проблема, когда наш сервис был приостановлен и во время проверок вместо вызова API дляпереходите к ошибке в качестве сообщения о состоянии, статус был ~ сбой ~, и, как таковое, приложение оставалось на экране без отображения сообщения типа «Произошла ошибка, попробуйте еще раз».Как я могу обойти поддержку сообщения ~ fail ~?

Сеть

func refreshActiveTrip() -> Observable<MaxResponse<Trip>> {
        return ApiClient.session.rx.request(urlRequest: MaxApiRouter.getActiveTrip(userId: getUser()!.id!))
            .convert(to: MaxResponse<Trip>.self)
            .catchError({ error in
                // Server returns 404 when the user has no active trip
                if let error = error as? NetworkingError, let code = error.httpResponse?.statusCode,
                    code == HTTPStatus.notFound.rawValue {
                    return Observable<MaxResponse<Trip>>.just(MaxResponse<Trip>())
                } else {
                    return Observable.error(error)
                }})
            .do(onNext: { response in
                if let trip = response.data {
                    self.storage.saveTrip(trip)
                } else {
                    self.storage.deleteTrip()
                }
            })

    }

Где это называется

func refreshActiveTrip() {
        source.refreshActiveTrip()
            .retry(.delayed(maxCount: 100, time: 2.5), shouldRetry: networkRetryPredicate)
            .asObservable()
            .take(1)
            .subscribe(onNext: {[weak self]  response in
                print("Next")
            }, onError: {[weak self] (error) in
                print("Error")
            }, onCompleted: {
                print("Completed")
            }, onDisposed: {
                print("Disposed")
            }).disposed(by: disposeBag)
}
...