diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2022-05-13 17:22:46 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2022-05-17 15:23:43 +0200 |
| commit | 10b11bb22f66c303bca1b213705fff96170823a1 (patch) | |
| tree | d1f95e3188092130be613ad68255665bdab96d95 | |
| parent | 849de5585a6c6c6e371729987a84a51602a91c21 (diff) | |
| download | mullvadvpn-10b11bb22f66c303bca1b213705fff96170823a1.tar.xz mullvadvpn-10b11bb22f66c303bca1b213705fff96170823a1.zip | |
Wire up new REST error
6 files changed, 19 insertions, 16 deletions
diff --git a/ios/MullvadVPN/AppStorePaymentManager/SendAppStoreReceiptOperation.swift b/ios/MullvadVPN/AppStorePaymentManager/SendAppStoreReceiptOperation.swift index 3bcfa7c4f3..befd7da698 100644 --- a/ios/MullvadVPN/AppStorePaymentManager/SendAppStoreReceiptOperation.swift +++ b/ios/MullvadVPN/AppStorePaymentManager/SendAppStoreReceiptOperation.swift @@ -65,7 +65,7 @@ class SendAppStoreReceiptOperation: ResultOperation<REST.CreateApplePaymentRespo private func sendReceipt(_ receiptData: Data) { submitReceiptTask = apiProxy.createApplePayment( - token: self.accountToken, + accountNumber: self.accountToken, receiptString: receiptData, retryStrategy: .noRetry) { result in switch result { diff --git a/ios/MullvadVPN/DisplayChainedError.swift b/ios/MullvadVPN/DisplayChainedError.swift index d1474f4864..aa7ec26b2d 100644 --- a/ios/MullvadVPN/DisplayChainedError.swift +++ b/ios/MullvadVPN/DisplayChainedError.swift @@ -184,7 +184,9 @@ extension TunnelManager.Error: DisplayChainedError { reason ) - if case .server(.keyLimitReached) = restError { + if case .unhandledResponse(_, let serverErrorResponse) = restError, + serverErrorResponse?.code == .keyLimitReached + { // TODO: maybe use `restError.recoverySuggestion` instead? message.append("\n\n") message.append(NSLocalizedString( @@ -209,7 +211,9 @@ extension TunnelManager.Error: DisplayChainedError { reason ) - if case .server(.keyLimitReached) = restError { + if case .unhandledResponse(_, let serverErrorResponse) = restError, + serverErrorResponse?.code == .keyLimitReached + { // TODO: maybe use `restError.recoverySuggestion` instead? message.append("\n\n") message.append(NSLocalizedString( @@ -336,7 +340,9 @@ extension AppStorePaymentManager.Error: DisplayChainedError { case .validateAccount(let restError): let reason = restError.errorChainDescription ?? "" - if case .server(.invalidAccount) = restError { + if case .unhandledResponse(_, let serverErrorResponse) = restError, + serverErrorResponse?.code == .invalidAccount + { return String( format: NSLocalizedString( "INVALID_ACCOUNT_ERROR", diff --git a/ios/MullvadVPN/LoginViewController.swift b/ios/MullvadVPN/LoginViewController.swift index fa63d40ed7..f345798941 100644 --- a/ios/MullvadVPN/LoginViewController.swift +++ b/ios/MullvadVPN/LoginViewController.swift @@ -364,20 +364,14 @@ private extension LoginState { urlError.localizedDescription ) - case .server(let serverError): - var message = serverError.errorDescription ?? NSLocalizedString( + case .unhandledResponse(_, let serverError): + return serverError?.detail ?? NSLocalizedString( "SUBHEAD_TITLE_UNKNOWN_SERVER_ERROR", tableName: "Login", comment: "Subhead displayed in the event of unknown server error." ) - if let recoverySuggestion = serverError.recoverySuggestion { - message.append("\n\(recoverySuggestion)") - } - - return message - - case .encodePayload, .decodeErrorResponse, .decodeSuccessResponse: + case .createURLRequest, .decodeResponse: return localizedUnknownInternalError } } else { diff --git a/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift b/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift index 6952a4130e..a38a23bb6c 100644 --- a/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift +++ b/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift @@ -158,7 +158,8 @@ class SetAccountOperation: ResultOperation<(), TunnelManager.Error> { case .success: self.logger.info("Removed key (\(index)) from server.") - case .failure(.server(.pubKeyNotFound)): + case .failure(.unhandledResponse(_, let serverErrorResponse)) + where serverErrorResponse?.code == .publicKeyNotFound: self.logger.debug("Key (\(index)) was not found on server.") case .failure(let error): diff --git a/ios/MullvadVPN/TunnelManager/TunnelManager.swift b/ios/MullvadVPN/TunnelManager/TunnelManager.swift index 76f7c0945b..755e92306c 100644 --- a/ios/MullvadVPN/TunnelManager/TunnelManager.swift +++ b/ios/MullvadVPN/TunnelManager/TunnelManager.swift @@ -845,7 +845,8 @@ extension TunnelManager { // Do not retry if logged out. return nil - case .replaceWireguardKey(.server(.invalidAccount)): + case .replaceWireguardKey(.unhandledResponse(_, let serverErrorResponse)) + where serverErrorResponse?.code == .invalidAccount: // Do not retry if account was removed. return nil diff --git a/ios/MullvadVPN/WireguardKeysViewController.swift b/ios/MullvadVPN/WireguardKeysViewController.swift index d53739edae..f3fad9cbc6 100644 --- a/ios/MullvadVPN/WireguardKeysViewController.swift +++ b/ios/MullvadVPN/WireguardKeysViewController.swift @@ -227,7 +227,8 @@ class WireguardKeysViewController: UIViewController, TunnelObserver { self.updateViewState(.verifiedKey(true)) case .failure(let error): - if case .server(.pubKeyNotFound) = error { + if case .unhandledResponse(_, let serverErrorResponse) = error, + serverErrorResponse?.code == .publicKeyNotFound { self.updateViewState(.verifiedKey(false)) } else { self.showKeyVerificationFailureAlert(error) |
