diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2020-01-07 13:08:08 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2020-01-08 15:02:46 +0100 |
| commit | df86ac696599630f98d6f26bf7b901e3f8ab07e4 (patch) | |
| tree | 30d59f0599fb9308c2c6b200c3077c15cbd45d73 | |
| parent | 233690c4e1bd67cc971ff36516f96bcfa29056cc (diff) | |
| download | mullvadvpn-df86ac696599630f98d6f26bf7b901e3f8ab07e4.tar.xz mullvadvpn-df86ac696599630f98d6f26bf7b901e3f8ab07e4.zip | |
Implement LocalizedError for AccountError
| -rw-r--r-- | ios/MullvadVPN/Account.swift | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/ios/MullvadVPN/Account.swift b/ios/MullvadVPN/Account.swift index 0d98134769..b8bd631e12 100644 --- a/ios/MullvadVPN/Account.swift +++ b/ios/MullvadVPN/Account.swift @@ -8,6 +8,7 @@ import Combine import Foundation +import NetworkExtension import os /// A enum describing the errors emitted by `Account` @@ -25,6 +26,47 @@ enum AccountLoginError: Error { case tunnelConfiguration(TunnelManagerError) } +extension AccountError: LocalizedError { + var errorDescription: String? { + switch self { + case .login: + return NSLocalizedString("Log in error", comment: "") + + case .logout: + return NSLocalizedString("Log out error", comment: "") + } + } + + var failureReason: String? { + switch self { + case .login(.invalidAccount): + return NSLocalizedString("Invalid account", comment: "") + + case .login(.tunnelConfiguration(.setAccount(let setAccountError))): + switch setAccountError { + case .pushWireguardKey(.transport(.network)): + return NSLocalizedString("Network error", comment: "") + + case .pushWireguardKey(.server(let serverError)): + return serverError.errorDescription ?? serverError.message + + case .setup(.saveTunnel(let systemError as NEVPNError)) + where systemError.code == .configurationReadWriteFailed: + return NSLocalizedString("Permission denied", comment: "") + + default: + return NSLocalizedString("Internal error", comment: "") + } + + case .logout: + return NSLocalizedString("Internal error", comment: "") + + default: + return nil + } + } +} + /// A enum holding the `UserDefaults` string keys private enum UserDefaultsKeys: String { case accountToken = "accountToken" |
