macOS: Consolidate presenting of the import panel

Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
Roopesh Chander
2019-01-05 19:16:16 +05:30
parent f3c2904241
commit cb778fe7e0
5 changed files with 25 additions and 26 deletions
@@ -0,0 +1,18 @@
// SPDX-License-Identifier: MIT
// Copyright © 2018 WireGuard LLC. All Rights Reserved.
import Cocoa
class ImportPanelPresenter {
static func presentImportPanel(tunnelsManager: TunnelsManager, sourceVC: NSViewController) {
guard let window = sourceVC.view.window else { return }
let openPanel = NSOpenPanel()
openPanel.allowedFileTypes = ["conf", "zip"]
openPanel.beginSheetModal(for: window) { [weak tunnelsManager] response in
guard let tunnelsManager = tunnelsManager else { return }
guard response == .OK else { return }
guard let url = openPanel.url else { return }
TunnelImporter.importFromFile(url: url, into: tunnelsManager, sourceVC: sourceVC, errorPresenterType: ErrorPresenter.self)
}
}
}
@@ -132,14 +132,7 @@ class StatusMenu: NSMenu {
@objc func importTunnelsClicked() {
NSApp.activate(ignoringOtherApps: true)
manageTunnelsWindow.makeKeyAndOrderFront(self)
let openPanel = NSOpenPanel()
openPanel.allowedFileTypes = ["conf", "zip"]
openPanel.beginSheetModal(for: manageTunnelsWindow) { [weak tunnelsManager] response in
guard let tunnelsManager = tunnelsManager else { return }
guard response == .OK else { return }
guard let url = openPanel.url else { return }
TunnelImporter.importFromFile(url: url, into: tunnelsManager, sourceVC: nil, errorPresenterType: ErrorPresenter.self)
}
ImportPanelPresenter.presentImportPanel(tunnelsManager: tunnelsManager, sourceVC: manageTunnelsRootVC!)
}
}
@@ -40,14 +40,6 @@ class NoTunnelsDetailViewController: NSViewController {
}
@objc func importTunnelClicked() {
guard let window = view.window else { return }
let openPanel = NSOpenPanel()
openPanel.allowedFileTypes = ["conf", "zip"]
openPanel.beginSheetModal(for: window) { [weak tunnelsManager] response in
guard let tunnelsManager = tunnelsManager else { return }
guard response == .OK else { return }
guard let url = openPanel.url else { return }
TunnelImporter.importFromFile(url: url, into: tunnelsManager, sourceVC: nil, errorPresenterType: ErrorPresenter.self)
}
ImportPanelPresenter.presentImportPanel(tunnelsManager: tunnelsManager, sourceVC: self)
}
}
@@ -131,15 +131,7 @@ class TunnelsListTableViewController: NSViewController {
}
@objc func importTunnelClicked() {
guard let window = view.window else { return }
let openPanel = NSOpenPanel()
openPanel.allowedFileTypes = ["conf", "zip"]
openPanel.beginSheetModal(for: window) { [weak tunnelsManager] response in
guard let tunnelsManager = tunnelsManager else { return }
guard response == .OK else { return }
guard let url = openPanel.url else { return }
TunnelImporter.importFromFile(url: url, into: tunnelsManager, sourceVC: nil, errorPresenterType: ErrorPresenter.self)
}
ImportPanelPresenter.presentImportPanel(tunnelsManager: tunnelsManager, sourceVC: self)
}
@objc func removeTunnelClicked() {