Ask for title when scaning a QR.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jeroen Leenarts 2018-09-25 20:59:15 +02:00
parent edaeaf732d
commit ad28815bef
2 changed files with 18 additions and 2 deletions

View File

@ -524,6 +524,10 @@ extension AppCoordinator: QRScanViewControllerDelegate {
qrScanViewController.navigationController?.popViewController(animated: true) qrScanViewController.navigationController?.popViewController(animated: true)
showTunnelInfoViewController(tunnel: tunnel, context: tunnel.managedObjectContext!) showTunnelInfoViewController(tunnel: tunnel, context: tunnel.managedObjectContext!)
} }
func didCancel(qrScanViewController: QRScanViewController) {
qrScanViewController.navigationController?.popViewController(animated: true)
}
} }
extension AppCoordinator: SettingsTableViewControllerDelegate { extension AppCoordinator: SettingsTableViewControllerDelegate {

View File

@ -12,6 +12,7 @@ import UIKit
protocol QRScanViewControllerDelegate: class { protocol QRScanViewControllerDelegate: class {
func didSave(tunnel: Tunnel, qrScanViewController: QRScanViewController) func didSave(tunnel: Tunnel, qrScanViewController: QRScanViewController)
func didCancel(qrScanViewController: QRScanViewController)
} }
class QRScanViewController: UIViewController { class QRScanViewController: UIViewController {
@ -102,8 +103,19 @@ class QRScanViewController: UIViewController {
func scanDidComplete(withCode code: String) { func scanDidComplete(withCode code: String) {
do { do {
let tunnel = try Tunnel.fromConfig(code, context: viewContext) let tunnel = try Tunnel.fromConfig(code, context: viewContext)
try viewContext.save() let alert = UIAlertController(title: NSLocalizedString("Enter a title for new tunnel", comment: ""), message: nil, preferredStyle: .alert)
delegate?.didSave(tunnel: tunnel, qrScanViewController: self) alert.addTextField(configurationHandler: nil)
alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler: nil))
alert.addAction(UIAlertAction(title: NSLocalizedString("Save", comment: ""), style: .default, handler: { [weak self] _ in
do {
tunnel.title = alert.textFields?[0].text
try self?.viewContext.save()
self?.delegate?.didSave(tunnel: tunnel, qrScanViewController: self!)
} catch {
self?.scanDidEncounterError(title: "Invalid Code", message: "The scanned code is not a valid WireGuard config file.")
}
}))
} catch { } catch {
scanDidEncounterError(title: "Invalid Code", message: "The scanned code is not a valid WireGuard config file.") scanDidEncounterError(title: "Invalid Code", message: "The scanned code is not a valid WireGuard config file.")
} }