iOS: Consolidate all showConfirmationAlert()s into one place
Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
parent
adc5a7cac2
commit
fc163fc9ff
|
@ -50,6 +50,7 @@
|
||||||
6BD5C97E220D1AE200784E08 /* key.c in Sources */ = {isa = PBXBuildFile; fileRef = 6BD5C979220D1AE100784E08 /* key.c */; };
|
6BD5C97E220D1AE200784E08 /* key.c in Sources */ = {isa = PBXBuildFile; fileRef = 6BD5C979220D1AE100784E08 /* key.c */; };
|
||||||
6F0F44C9222D55BB00B0FF04 /* TextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F0F44C8222D55BB00B0FF04 /* TextCell.swift */; };
|
6F0F44C9222D55BB00B0FF04 /* TextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F0F44C8222D55BB00B0FF04 /* TextCell.swift */; };
|
||||||
6F0F44CB222D55FD00B0FF04 /* EditableTextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F0F44CA222D55FD00B0FF04 /* EditableTextCell.swift */; };
|
6F0F44CB222D55FD00B0FF04 /* EditableTextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F0F44CA222D55FD00B0FF04 /* EditableTextCell.swift */; };
|
||||||
|
6F19D30422402B8700A126F2 /* ConfirmationAlertPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F19D30322402B8700A126F2 /* ConfirmationAlertPresenter.swift */; };
|
||||||
6F4DD16B21DA558800690EAE /* TunnelListRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4DD16A21DA558800690EAE /* TunnelListRow.swift */; };
|
6F4DD16B21DA558800690EAE /* TunnelListRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4DD16A21DA558800690EAE /* TunnelListRow.swift */; };
|
||||||
6F4DD16C21DA558F00690EAE /* NSTableView+Reuse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4DD16721DA552B00690EAE /* NSTableView+Reuse.swift */; };
|
6F4DD16C21DA558F00690EAE /* NSTableView+Reuse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4DD16721DA552B00690EAE /* NSTableView+Reuse.swift */; };
|
||||||
6F4DD16E21DBEA0700690EAE /* ManageTunnelsRootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4DD16D21DBEA0700690EAE /* ManageTunnelsRootViewController.swift */; };
|
6F4DD16E21DBEA0700690EAE /* ManageTunnelsRootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4DD16D21DBEA0700690EAE /* ManageTunnelsRootViewController.swift */; };
|
||||||
|
@ -269,6 +270,7 @@
|
||||||
6BD5C97A220D1AE200784E08 /* key.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = key.h; sourceTree = "<group>"; };
|
6BD5C97A220D1AE200784E08 /* key.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = key.h; sourceTree = "<group>"; };
|
||||||
6F0F44C8222D55BB00B0FF04 /* TextCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextCell.swift; sourceTree = "<group>"; };
|
6F0F44C8222D55BB00B0FF04 /* TextCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextCell.swift; sourceTree = "<group>"; };
|
||||||
6F0F44CA222D55FD00B0FF04 /* EditableTextCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditableTextCell.swift; sourceTree = "<group>"; };
|
6F0F44CA222D55FD00B0FF04 /* EditableTextCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditableTextCell.swift; sourceTree = "<group>"; };
|
||||||
|
6F19D30322402B8700A126F2 /* ConfirmationAlertPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfirmationAlertPresenter.swift; sourceTree = "<group>"; };
|
||||||
6F4DD16721DA552B00690EAE /* NSTableView+Reuse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSTableView+Reuse.swift"; sourceTree = "<group>"; };
|
6F4DD16721DA552B00690EAE /* NSTableView+Reuse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSTableView+Reuse.swift"; sourceTree = "<group>"; };
|
||||||
6F4DD16A21DA558800690EAE /* TunnelListRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelListRow.swift; sourceTree = "<group>"; };
|
6F4DD16A21DA558800690EAE /* TunnelListRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelListRow.swift; sourceTree = "<group>"; };
|
||||||
6F4DD16D21DBEA0700690EAE /* ManageTunnelsRootViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManageTunnelsRootViewController.swift; sourceTree = "<group>"; };
|
6F4DD16D21DBEA0700690EAE /* ManageTunnelsRootViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManageTunnelsRootViewController.swift; sourceTree = "<group>"; };
|
||||||
|
@ -509,6 +511,7 @@
|
||||||
5F4541A721C44F5B00994C13 /* View */,
|
5F4541A721C44F5B00994C13 /* View */,
|
||||||
6F7774E0217181B1006A79B3 /* AppDelegate.swift */,
|
6F7774E0217181B1006A79B3 /* AppDelegate.swift */,
|
||||||
6F919EC2218A2AE90023B400 /* ErrorPresenter.swift */,
|
6F919EC2218A2AE90023B400 /* ErrorPresenter.swift */,
|
||||||
|
6F19D30322402B8700A126F2 /* ConfirmationAlertPresenter.swift */,
|
||||||
5F45417C21C1B23600994C13 /* UITableViewCell+Reuse.swift */,
|
5F45417C21C1B23600994C13 /* UITableViewCell+Reuse.swift */,
|
||||||
6FF4AC23211EC472002C96EB /* Info.plist */,
|
6FF4AC23211EC472002C96EB /* Info.plist */,
|
||||||
6FF4AC482120B9E0002C96EB /* WireGuard.entitlements */,
|
6FF4AC482120B9E0002C96EB /* WireGuard.entitlements */,
|
||||||
|
@ -1278,6 +1281,7 @@
|
||||||
5F45419821C2D60500994C13 /* KeyValueCell.swift in Sources */,
|
5F45419821C2D60500994C13 /* KeyValueCell.swift in Sources */,
|
||||||
6FBA103E21D6B6D70051C35F /* TunnelImporter.swift in Sources */,
|
6FBA103E21D6B6D70051C35F /* TunnelImporter.swift in Sources */,
|
||||||
6F9B8A8E223398610041B9C4 /* SSIDOptionDetailTableViewController.swift in Sources */,
|
6F9B8A8E223398610041B9C4 /* SSIDOptionDetailTableViewController.swift in Sources */,
|
||||||
|
6F19D30422402B8700A126F2 /* ConfirmationAlertPresenter.swift in Sources */,
|
||||||
6F919EC3218A2AE90023B400 /* ErrorPresenter.swift in Sources */,
|
6F919EC3218A2AE90023B400 /* ErrorPresenter.swift in Sources */,
|
||||||
6B62E45F220A6FA900EF34A6 /* PrivateDataConfirmation.swift in Sources */,
|
6B62E45F220A6FA900EF34A6 /* PrivateDataConfirmation.swift in Sources */,
|
||||||
6F5A2B4821AFF49A0081EDD8 /* FileManager+Extension.swift in Sources */,
|
6F5A2B4821AFF49A0081EDD8 /* FileManager+Extension.swift in Sources */,
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class ConfirmationAlertPresenter {
|
||||||
|
static func showConfirmationAlert(message: String, buttonTitle: String, from sourceObject: AnyObject, presentingVC: UIViewController, onConfirmed: @escaping (() -> Void)) {
|
||||||
|
let destroyAction = UIAlertAction(title: buttonTitle, style: .destructive) { _ in
|
||||||
|
onConfirmed()
|
||||||
|
}
|
||||||
|
let cancelAction = UIAlertAction(title: tr("actionCancel"), style: .cancel)
|
||||||
|
let alert = UIAlertController(title: "", message: message, preferredStyle: .actionSheet)
|
||||||
|
alert.addAction(destroyAction)
|
||||||
|
alert.addAction(cancelAction)
|
||||||
|
|
||||||
|
if let sourceView = sourceObject as? UIView {
|
||||||
|
alert.popoverPresentationController?.sourceView = sourceView
|
||||||
|
alert.popoverPresentationController?.sourceRect = sourceView.bounds
|
||||||
|
} else if let sourceBarButtonItem = sourceObject as? UIBarButtonItem {
|
||||||
|
alert.popoverPresentationController?.barButtonItem = sourceBarButtonItem
|
||||||
|
}
|
||||||
|
|
||||||
|
presentingVC.present(alert, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
}
|
|
@ -125,21 +125,6 @@ class TunnelDetailTableViewController: UITableViewController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func showConfirmationAlert(message: String, buttonTitle: String, from sourceView: UIView, onConfirmed: @escaping (() -> Void)) {
|
|
||||||
let destroyAction = UIAlertAction(title: buttonTitle, style: .destructive) { _ in
|
|
||||||
onConfirmed()
|
|
||||||
}
|
|
||||||
let cancelAction = UIAlertAction(title: tr("actionCancel"), style: .cancel)
|
|
||||||
let alert = UIAlertController(title: "", message: message, preferredStyle: .actionSheet)
|
|
||||||
alert.addAction(destroyAction)
|
|
||||||
alert.addAction(cancelAction)
|
|
||||||
|
|
||||||
alert.popoverPresentationController?.sourceView = sourceView
|
|
||||||
alert.popoverPresentationController?.sourceRect = sourceView.bounds
|
|
||||||
|
|
||||||
present(alert, animated: true, completion: nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
func startUpdatingRuntimeConfiguration() {
|
func startUpdatingRuntimeConfiguration() {
|
||||||
reloadRuntimeConfiguration()
|
reloadRuntimeConfiguration()
|
||||||
reloadRuntimeConfigurationTimer?.invalidate()
|
reloadRuntimeConfigurationTimer?.invalidate()
|
||||||
|
@ -435,7 +420,9 @@ extension TunnelDetailTableViewController {
|
||||||
cell.hasDestructiveAction = true
|
cell.hasDestructiveAction = true
|
||||||
cell.onTapped = { [weak self] in
|
cell.onTapped = { [weak self] in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
self.showConfirmationAlert(message: tr("deleteTunnelConfirmationAlertMessage"), buttonTitle: tr("deleteTunnelConfirmationAlertButtonTitle"), from: cell) { [weak self] in
|
ConfirmationAlertPresenter.showConfirmationAlert(message: tr("deleteTunnelConfirmationAlertMessage"),
|
||||||
|
buttonTitle: tr("deleteTunnelConfirmationAlertButtonTitle"),
|
||||||
|
from: cell, presentingVC: self) { [weak self] in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
self.tunnelsManager.remove(tunnel: self.tunnel) { error in
|
self.tunnelsManager.remove(tunnel: self.tunnel) { error in
|
||||||
if error != nil {
|
if error != nil {
|
||||||
|
|
|
@ -311,7 +311,9 @@ extension TunnelEditTableViewController {
|
||||||
cell.hasDestructiveAction = true
|
cell.hasDestructiveAction = true
|
||||||
cell.onTapped = { [weak self, weak peerData] in
|
cell.onTapped = { [weak self, weak peerData] in
|
||||||
guard let self = self, let peerData = peerData else { return }
|
guard let self = self, let peerData = peerData else { return }
|
||||||
self.showConfirmationAlert(message: tr("deletePeerConfirmationAlertMessage"), buttonTitle: tr("deletePeerConfirmationAlertButtonTitle"), from: cell) { [weak self] in
|
ConfirmationAlertPresenter.showConfirmationAlert(message: tr("deletePeerConfirmationAlertMessage"),
|
||||||
|
buttonTitle: tr("deletePeerConfirmationAlertButtonTitle"),
|
||||||
|
from: cell, presentingVC: self) { [weak self] in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
let removedSectionIndices = self.deletePeer(peer: peerData)
|
let removedSectionIndices = self.deletePeer(peer: peerData)
|
||||||
let shouldShowExcludePrivateIPs = (self.tunnelViewModel.peersData.count == 1 && self.tunnelViewModel.peersData[0].shouldAllowExcludePrivateIPsControl)
|
let shouldShowExcludePrivateIPs = (self.tunnelViewModel.peersData.count == 1 && self.tunnelViewModel.peersData[0].shouldAllowExcludePrivateIPsControl)
|
||||||
|
@ -461,21 +463,6 @@ extension TunnelEditTableViewController {
|
||||||
loadSections()
|
loadSections()
|
||||||
return IndexSet(integer: interfaceFieldsBySection.count + peer.index)
|
return IndexSet(integer: interfaceFieldsBySection.count + peer.index)
|
||||||
}
|
}
|
||||||
|
|
||||||
func showConfirmationAlert(message: String, buttonTitle: String, from sourceView: UIView, onConfirmed: @escaping (() -> Void)) {
|
|
||||||
let destroyAction = UIAlertAction(title: buttonTitle, style: .destructive) { _ in
|
|
||||||
onConfirmed()
|
|
||||||
}
|
|
||||||
let cancelAction = UIAlertAction(title: tr("actionCancel"), style: .cancel)
|
|
||||||
let alert = UIAlertController(title: "", message: message, preferredStyle: .actionSheet)
|
|
||||||
alert.addAction(destroyAction)
|
|
||||||
alert.addAction(cancelAction)
|
|
||||||
|
|
||||||
alert.popoverPresentationController?.sourceView = sourceView
|
|
||||||
alert.popoverPresentationController?.sourceRect = sourceView.bounds
|
|
||||||
|
|
||||||
present(alert, animated: true, completion: nil)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension TunnelEditTableViewController {
|
extension TunnelEditTableViewController {
|
||||||
|
|
|
@ -238,7 +238,8 @@ class TunnelsListTableViewController: UIViewController {
|
||||||
tr(format: "deleteTunnelConfirmationAlertButtonMessage (%d)", selectedTunnels.count) :
|
tr(format: "deleteTunnelConfirmationAlertButtonMessage (%d)", selectedTunnels.count) :
|
||||||
tr(format: "deleteTunnelsConfirmationAlertButtonMessage (%d)", selectedTunnels.count)
|
tr(format: "deleteTunnelsConfirmationAlertButtonMessage (%d)", selectedTunnels.count)
|
||||||
let title = tr("deleteTunnelsConfirmationAlertButtonTitle")
|
let title = tr("deleteTunnelsConfirmationAlertButtonTitle")
|
||||||
self.showConfirmationAlert(message: message, buttonTitle: title, from: sender) { [weak self] in
|
ConfirmationAlertPresenter.showConfirmationAlert(message: message, buttonTitle: title,
|
||||||
|
from: sender, presentingVC: self) { [weak self] in
|
||||||
self?.tunnelsManager?.removeMultiple(tunnels: selectedTunnels) { [weak self] error in
|
self?.tunnelsManager?.removeMultiple(tunnels: selectedTunnels) { [weak self] error in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
if let error = error {
|
if let error = error {
|
||||||
|
@ -250,20 +251,6 @@ class TunnelsListTableViewController: UIViewController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func showConfirmationAlert(message: String, buttonTitle: String, from barButtonItem: UIBarButtonItem, onConfirmed: @escaping (() -> Void)) {
|
|
||||||
let destroyAction = UIAlertAction(title: buttonTitle, style: .destructive) { _ in
|
|
||||||
onConfirmed()
|
|
||||||
}
|
|
||||||
let cancelAction = UIAlertAction(title: tr("actionCancel"), style: .cancel)
|
|
||||||
let alert = UIAlertController(title: "", message: message, preferredStyle: .actionSheet)
|
|
||||||
alert.addAction(destroyAction)
|
|
||||||
alert.addAction(cancelAction)
|
|
||||||
|
|
||||||
alert.popoverPresentationController?.barButtonItem = barButtonItem
|
|
||||||
|
|
||||||
present(alert, animated: true, completion: nil)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension TunnelsListTableViewController: UIDocumentPickerDelegate {
|
extension TunnelsListTableViewController: UIDocumentPickerDelegate {
|
||||||
|
|
Loading…
Reference in New Issue