]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Tunnel list: Fix importing zip with multiple configurations
authorRoopesh Chander <roop@roopc.net>
Wed, 31 Oct 2018 09:00:25 +0000 (14:30 +0530)
committerRoopesh Chander <roop@roopc.net>
Wed, 31 Oct 2018 09:00:25 +0000 (14:30 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/iOS/TunnelsListTableViewController.swift

index 209ada8aaa0480c40e2e9e1a8f1fb6b7fb2a1f0b..9763b9293a332544fc79e2c2e08d241be9cf10b4 100644 (file)
@@ -160,21 +160,27 @@ class TunnelsListTableViewController: UITableViewController {
                 print("Error opening zip archive: \(error)")
             }
             var numberOfConfigFilesWithErrors = 0
+            var tunnelConfigurationsToAdd: [TunnelConfiguration] = []
             for unarchivedFile in unarchivedFiles {
                 if let fileBaseName = URL(string: unarchivedFile.fileName)?.deletingPathExtension().lastPathComponent,
                     let fileContents = String(data: unarchivedFile.contents, encoding: .utf8),
                     let tunnelConfiguration = try? WgQuickConfigFileParser.parse(fileContents, name: fileBaseName) {
-                    tunnelsManager?.add(tunnelConfiguration: tunnelConfiguration) { (tunnel, error) in
-                        if (error != nil) {
-                            print("Error adding configuration: \(tunnelConfiguration.interface.name)")
-                        }
-                    }
+                    tunnelConfigurationsToAdd.append(tunnelConfiguration)
                 } else {
                     numberOfConfigFilesWithErrors = numberOfConfigFilesWithErrors + 1
                 }
             }
+            var numberOfTunnelsRemainingAfterError = 0
+            tunnelsManager?.addMultiple(tunnelConfigurations: tunnelConfigurationsToAdd) { (numberOfTunnelsRemaining, error) in
+                if (error != nil) {
+                    numberOfTunnelsRemainingAfterError = numberOfTunnelsRemaining
+                } else {
+                    assert(numberOfTunnelsRemaining == 0)
+                }
+            }
             if (numberOfConfigFilesWithErrors > 0) {
-                showErrorAlert(title: "Could not import \(numberOfConfigFilesWithErrors) files", message: "\(numberOfConfigFilesWithErrors) of \(unarchivedFiles.count) files contained errors and were not imported")
+                showErrorAlert(title: "Could not import \(numberOfConfigFilesWithErrors + numberOfTunnelsRemainingAfterError) files",
+                    message: "\(numberOfConfigFilesWithErrors) of \(unarchivedFiles.count) files contained errors and were not imported")
             }
         }
     }