From 205585c5d4e4edd7340d1ec4a40aef36b55963a9 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Wed, 5 Dec 2018 15:23:55 +0530 Subject: [PATCH] Refactoring: Consolidate file deletion into a separate function --- WireGuard/Shared/FileManager+Extension.swift | 10 ++++++++++ WireGuard/WireGuard/UI/iOS/AppDelegate.swift | 8 +------- .../UI/iOS/SettingsTableViewController.swift | 15 +++++---------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/WireGuard/Shared/FileManager+Extension.swift b/WireGuard/Shared/FileManager+Extension.swift index 7b25ffb..4d9bf4f 100644 --- a/WireGuard/Shared/FileManager+Extension.swift +++ b/WireGuard/Shared/FileManager+Extension.swift @@ -16,4 +16,14 @@ extension FileManager { } return sharedFolderURL.appendingPathComponent("lastActivatedTunnelLog.txt") } + + static func deleteFile(at url: URL) -> Bool { + do { + try FileManager.default.removeItem(at: url) + } catch(let e) { + os_log("Failed to delete file '%{public}@': %{public}@", log: OSLog.default, type: .debug, url.absoluteString, e.localizedDescription) + return false + } + return true + } } diff --git a/WireGuard/WireGuard/UI/iOS/AppDelegate.swift b/WireGuard/WireGuard/UI/iOS/AppDelegate.swift index 7ba77e4..3b414dd 100644 --- a/WireGuard/WireGuard/UI/iOS/AppDelegate.swift +++ b/WireGuard/WireGuard/UI/iOS/AppDelegate.swift @@ -27,14 +27,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { - defer { - do { - try FileManager.default.removeItem(at: url) - } catch { - os_log("Failed to remove item from Inbox: %{public}@", log: OSLog.default, type: .debug, url.absoluteString) - } - } mainVC?.tunnelsListVC?.importFromFile(url: url) + _ = FileManager.deleteFile(at: url) return true } diff --git a/WireGuard/WireGuard/UI/iOS/SettingsTableViewController.swift b/WireGuard/WireGuard/UI/iOS/SettingsTableViewController.swift index 6f8410e..7beb2e9 100644 --- a/WireGuard/WireGuard/UI/iOS/SettingsTableViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/SettingsTableViewController.swift @@ -69,12 +69,9 @@ class SettingsTableViewController: UITableViewController { guard let destinationDir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return } + let destinationURL = destinationDir.appendingPathComponent("wireguard-export.zip") - do { - try FileManager.default.removeItem(at: destinationURL) - } catch { - os_log("Failed to delete file: %{public}@ : %{public}@", log: OSLog.default, type: .error, destinationURL.absoluteString, error.localizedDescription) - } + _ = FileManager.deleteFile(at: destinationURL) let count = tunnelsManager.numberOfTunnels() let tunnelConfigurations = (0 ..< count).compactMap { tunnelsManager.tunnel(at: $0).tunnelConfiguration() } @@ -102,10 +99,8 @@ class SettingsTableViewController: UITableViewController { let destinationURL = destinationDir.appendingPathComponent("WireGuard_iOS_log_\(timeStampString).txt") if (FileManager.default.fileExists(atPath: destinationURL.path)) { - do { - try FileManager.default.removeItem(at: destinationURL) - } catch { - os_log("Failed to delete file: %{public}@ : %{public}@", log: OSLog.default, type: .error, destinationURL.absoluteString, error.localizedDescription) + let isDeleted = FileManager.deleteFile(at: destinationURL) + if (!isDeleted) { showErrorAlert(title: "No log available", message: "The pre-existing log could not be cleared") return } @@ -131,7 +126,7 @@ class SettingsTableViewController: UITableViewController { activityVC.popoverPresentationController?.sourceRect = sourceView.bounds activityVC.completionWithItemsHandler = { (_, _, _, _) in // Remove the exported log file after the activity has completed - try? FileManager.default.removeItem(at: destinationURL) + _ = FileManager.deleteFile(at: destinationURL) } self.present(activityVC, animated: true) }