]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Swift 5 migration: Make use of Result type
authorRoopesh Chander <roop@roopc.net>
Mon, 8 Apr 2019 07:52:06 +0000 (13:22 +0530)
committerRoopesh Chander <roop@roopc.net>
Sun, 21 Apr 2019 12:21:42 +0000 (17:51 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/Tunnel/TunnelsManager.swift
WireGuard/WireGuard/UI/TunnelImporter.swift
WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift
WireGuard/WireGuard/UI/iOS/ViewController/TunnelEditTableViewController.swift
WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift
WireGuard/WireGuard/UI/macOS/AppDelegate.swift
WireGuard/WireGuard/UI/macOS/ViewController/TunnelEditViewController.swift
WireGuard/WireGuard/ZipArchive/ZipArchive.swift
WireGuard/WireGuard/ZipArchive/ZipImporter.swift

index ce8008c0c603fbf2e8a184fbb377f703f5183a36..edf769063a91a48f0eeae83849c23d6c1c3ba02a 100644 (file)
@@ -33,7 +33,7 @@ class TunnelsManager {
         startObservingTunnelConfigurations()
     }
 
-    static func create(completionHandler: @escaping (WireGuardResult<TunnelsManager>) -> Void) {
+    static func create(completionHandler: @escaping (Result<TunnelsManager, TunnelsManagerError>) -> Void) {
         #if targetEnvironment(simulator)
         completionHandler(.success(TunnelsManager(tunnelProviders: MockTunnels.createMockTunnels())))
         #else
@@ -104,7 +104,7 @@ class TunnelsManager {
         }
     }
 
-    func add(tunnelConfiguration: TunnelConfiguration, onDemandOption: ActivateOnDemandOption = .off, completionHandler: @escaping (WireGuardResult<TunnelContainer>) -> Void) {
+    func add(tunnelConfiguration: TunnelConfiguration, onDemandOption: ActivateOnDemandOption = .off, completionHandler: @escaping (Result<TunnelContainer, TunnelsManagerError>) -> Void) {
         let tunnelName = tunnelConfiguration.name ?? ""
         if tunnelName.isEmpty {
             completionHandler(.failure(TunnelsManagerError.tunnelNameEmpty))
@@ -167,9 +167,15 @@ class TunnelsManager {
         let tail = tunnelConfigurations.dropFirst()
         add(tunnelConfiguration: head) { [weak self, tail] result in
             DispatchQueue.main.async {
-                let numberSuccessful = numberSuccessful + (result.isSuccess ? 1 : 0)
-                let lastError = lastError ?? (result.error as? TunnelsManagerError)
-                self?.addMultiple(tunnelConfigurations: tail, numberSuccessful: numberSuccessful, lastError: lastError, completionHandler: completionHandler)
+                var numberSuccessfulCount = numberSuccessful
+                var lastError: TunnelsManagerError?
+                switch result {
+                case .failure(let error):
+                    lastError = error
+                case .success:
+                    numberSuccessfulCount = numberSuccessful + 1
+                }
+                self?.addMultiple(tunnelConfigurations: tail, numberSuccessful: numberSuccessfulCount, lastError: lastError, completionHandler: completionHandler)
             }
         }
     }
index 70e536fff85208fbd2fcd8a10ad39f03c88c9419..cf05ff92d538a5161cbeb989efcfff1f5b36c2bd 100644 (file)
@@ -16,10 +16,10 @@ class TunnelImporter {
             if url.pathExtension.lowercased() == "zip" {
                 dispatchGroup.enter()
                 ZipImporter.importConfigFiles(from: url) { result in
-                    if let error = result.error {
+                    switch result {
+                    case .failure(let error):
                         lastFileImportErrorText = error.alertText
-                    }
-                    if let configsInZip = result.value {
+                    case .success(let configsInZip):
                         configs.append(contentsOf: configsInZip)
                     }
                     dispatchGroup.leave()
index 48cb7b034e5f564b6b2cfacef01e46ebfbee7ede..380299c249682bcd3803022a901585f44b6d76c9 100644 (file)
@@ -42,19 +42,18 @@ class MainViewController: UISplitViewController {
         TunnelsManager.create { [weak self] result in
             guard let self = self else { return }
 
-            if let error = result.error {
+            switch result {
+            case .failure(let error):
                 ErrorPresenter.showErrorAlert(error: error, from: self)
-                return
-            }
-            let tunnelsManager: TunnelsManager = result.value!
-
-            self.tunnelsManager = tunnelsManager
-            self.tunnelsListVC?.setTunnelsManager(tunnelsManager: tunnelsManager)
+            case .success(let tunnelsManager):
+                self.tunnelsManager = tunnelsManager
+                self.tunnelsListVC?.setTunnelsManager(tunnelsManager: tunnelsManager)
 
-            tunnelsManager.activationDelegate = self
+                tunnelsManager.activationDelegate = self
 
-            self.onTunnelsManagerReady?(tunnelsManager)
-            self.onTunnelsManagerReady = nil
+                self.onTunnelsManagerReady?(tunnelsManager)
+                self.onTunnelsManagerReady = nil
+            }
         }
     }
 
index 6452bfb99adc3bc100e17c00d42510690bd3e1ed..e9c09957d9376851eed85c257b02c9f779cf0c3a 100644 (file)
@@ -127,10 +127,10 @@ class TunnelEditTableViewController: UITableViewController {
             } else {
                 // We're adding a new tunnel
                 tunnelsManager.add(tunnelConfiguration: tunnelConfiguration, onDemandOption: onDemandOption) { [weak self] result in
-                    if let error = result.error {
+                    switch result {
+                    case .failure(let error):
                         ErrorPresenter.showErrorAlert(error: error, from: self)
-                    } else {
-                        let tunnel: TunnelContainer = result.value!
+                    case .success(let tunnel):
                         self?.dismiss(animated: true, completion: nil)
                         self?.delegate?.tunnelSaved(tunnel: tunnel)
                     }
index d54d7a1050421dd3a2a73d7cc0e7b88e1f1d8350..eda1ffac135345ea452d921846516f68e16ccf6f 100644 (file)
@@ -264,9 +264,10 @@ extension TunnelsListTableViewController: QRScanViewControllerDelegate {
     func addScannedQRCode(tunnelConfiguration: TunnelConfiguration, qrScanViewController: QRScanViewController,
                           completionHandler: (() -> Void)?) {
         tunnelsManager?.add(tunnelConfiguration: tunnelConfiguration) { result in
-            if let error = result.error {
+            switch result {
+            case .failure(let error):
                 ErrorPresenter.showErrorAlert(error: error, from: qrScanViewController, onDismissal: completionHandler)
-            } else {
+            case .success:
                 completionHandler?()
             }
         }
index 3e98c20d724864a6a009ac01db9b5d7b813d5a45..a5f8c34d4add1b0e5ac3d8fa88e9599589ba9efe 100644 (file)
@@ -20,26 +20,25 @@ class AppDelegate: NSObject, NSApplicationDelegate {
 
         TunnelsManager.create { [weak self] result in
             guard let self = self else { return }
-            if let error = result.error {
-                ErrorPresenter.showErrorAlert(error: error, from: nil)
-                return
-            }
-
-            let tunnelsManager: TunnelsManager = result.value!
 
-            let statusMenu = StatusMenu(tunnelsManager: tunnelsManager)
-            statusMenu.windowDelegate = self
+            switch result {
+            case .failure(let error):
+                ErrorPresenter.showErrorAlert(error: error, from: nil)
+            case .success(let tunnelsManager):
+                let statusMenu = StatusMenu(tunnelsManager: tunnelsManager)
+                statusMenu.windowDelegate = self
 
-            let statusItemController = StatusItemController()
-            statusItemController.statusItem.menu = statusMenu
+                let statusItemController = StatusItemController()
+                statusItemController.statusItem.menu = statusMenu
 
-            let tunnelsTracker = TunnelsTracker(tunnelsManager: tunnelsManager)
-            tunnelsTracker.statusMenu = statusMenu
-            tunnelsTracker.statusItemController = statusItemController
+                let tunnelsTracker = TunnelsTracker(tunnelsManager: tunnelsManager)
+                tunnelsTracker.statusMenu = statusMenu
+                tunnelsTracker.statusItemController = statusItemController
 
-            self.tunnelsManager = tunnelsManager
-            self.tunnelsTracker = tunnelsTracker
-            self.statusItemController = statusItemController
+                self.tunnelsManager = tunnelsManager
+                self.tunnelsTracker = tunnelsTracker
+                self.statusItemController = statusItemController
+            }
         }
     }
 
index e643ffc18d7bcba826ad9ea87b08417fdb784015..471c4fe39ea5c4fd92341477dd34308aeda0bc80 100644 (file)
@@ -247,13 +247,13 @@ class TunnelEditViewController: NSViewController {
             // We're creating a new tunnel
             self.tunnelsManager.add(tunnelConfiguration: tunnelConfiguration, onDemandOption: onDemandOption) { [weak self] result in
                 self?.setUserInteractionEnabled(true)
-                if let error = result.error {
+                switch result {
+                case .failure(let error):
                     ErrorPresenter.showErrorAlert(error: error, from: self)
-                    return
+                case .success(let tunnel):
+                    self?.dismiss(self)
+                    self?.delegate?.tunnelSaved(tunnel: tunnel)
                 }
-                let tunnel: TunnelContainer = result.value!
-                self?.dismiss(self)
-                self?.delegate?.tunnelSaved(tunnel: tunnel)
             }
         }
     }
index 85623da6d4d3f55580f7238cb11912878812fc69..c946e24f6320cc0d0e176a7ba86ffdf8ae76bed5 100644 (file)
@@ -7,6 +7,7 @@ enum ZipArchiveError: WireGuardAppError {
     case cantOpenInputZipFile
     case cantOpenOutputZipFileForWriting
     case badArchive
+    case noTunnelsInZipArchive
 
     var alertText: AlertText {
         switch self {
@@ -16,6 +17,8 @@ enum ZipArchiveError: WireGuardAppError {
             return (tr("alertCantOpenOutputZipFileForWritingTitle"), tr("alertCantOpenOutputZipFileForWritingMessage"))
         case .badArchive:
             return (tr("alertBadArchiveTitle"), tr("alertBadArchiveMessage"))
+        case .noTunnelsInZipArchive:
+            return (tr("alertNoTunnelsInImportedZipArchiveTitle"), tr("alertNoTunnelsInImportedZipArchiveMessage"))
         }
     }
 }
index ade30a636b02896d51de6325b2175b400186e26c..499181acfd5ceaf2f75fa2982ac78e69158a9ce8 100644 (file)
@@ -3,16 +3,8 @@
 
 import Foundation
 
-enum ZipImporterError: WireGuardAppError {
-    case noTunnelsInZipArchive
-
-    var alertText: AlertText {
-        return (tr("alertNoTunnelsInImportedZipArchiveTitle"), tr("alertNoTunnelsInImportedZipArchiveMessage"))
-    }
-}
-
 class ZipImporter {
-    static func importConfigFiles(from url: URL, completion: @escaping (WireGuardResult<[TunnelConfiguration?]>) -> Void) {
+    static func importConfigFiles(from url: URL, completion: @escaping (Result<[TunnelConfiguration?], ZipArchiveError>) -> Void) {
         DispatchQueue.global(qos: .userInitiated).async {
             var unarchivedFiles: [(fileBaseName: String, contents: Data)]
             do {
@@ -28,9 +20,9 @@ class ZipImporter {
                 }
 
                 if unarchivedFiles.isEmpty {
-                    throw ZipImporterError.noTunnelsInZipArchive
+                    throw ZipArchiveError.noTunnelsInZipArchive
                 }
-            } catch let error as WireGuardAppError {
+            } catch let error as ZipArchiveError {
                 DispatchQueue.main.async { completion(.failure(error)) }
                 return
             } catch {