summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2020-01-07 13:08:08 +0100
committerAndrej Mihajlov <and@mullvad.net>2020-01-08 15:02:46 +0100
commitdf86ac696599630f98d6f26bf7b901e3f8ab07e4 (patch)
tree30d59f0599fb9308c2c6b200c3077c15cbd45d73
parent233690c4e1bd67cc971ff36516f96bcfa29056cc (diff)
downloadmullvadvpn-df86ac696599630f98d6f26bf7b901e3f8ab07e4.tar.xz
mullvadvpn-df86ac696599630f98d6f26bf7b901e3f8ab07e4.zip
Implement LocalizedError for AccountError
-rw-r--r--ios/MullvadVPN/Account.swift42
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"