82 lines
2.4 KiB
Swift
82 lines
2.4 KiB
Swift
//
|
|
// KilSwitchPanelPresenter.swift
|
|
// PrivadoVPN
|
|
//
|
|
// Created by Juraldinio on 1/31/21.
|
|
// Copyright © 2021 Privado LLC. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
protocol KilSwitchPanelOutput: AnyObject {
|
|
|
|
}
|
|
|
|
final class KilSwitchPanelPresenter {
|
|
|
|
private weak var output: KilSwitchPanelOutput?
|
|
|
|
weak var viewInput: KilSwitchPanelViewInput?
|
|
|
|
// MARK: - Init
|
|
|
|
init(output: KilSwitchPanelOutput?) {
|
|
self.output = output
|
|
|
|
UserSettings.shared.killSwitchEmitter.addReaction { [weak self] enabled in
|
|
self?.viewInput?.killSwitch(enabled: enabled)
|
|
return self.isExist
|
|
}
|
|
|
|
UserSettings.shared.vpnTypeEmitter.addReaction { [weak self] type in
|
|
if type == .openVPN, UserSettings.shared.proto == "TCP" {
|
|
UserSettings.shared.killSwitchEnabled = false
|
|
self?.viewInput?.show(enabled: false)
|
|
} else {
|
|
self?.viewInput?.show(enabled: true)
|
|
}
|
|
return self.isExist
|
|
}
|
|
|
|
UserSettings.shared.vpnConfigurationEmitter.addReaction { [weak self] in
|
|
if UserSettings.shared.vpnType == .openVPN, UserSettings.shared.proto == "TCP" {
|
|
UserSettings.shared.killSwitchEnabled = false
|
|
self?.viewInput?.show(enabled: false)
|
|
} else {
|
|
self?.viewInput?.show(enabled: true)
|
|
}
|
|
return self.isExist
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// MARK: - KilSwitchPanelViewOutput
|
|
|
|
extension KilSwitchPanelPresenter: KilSwitchPanelViewOutput {
|
|
|
|
func viewIsReady(view: KilSwitchPanelViewInput) {
|
|
if #available(OSX 10.14, *) {
|
|
if UserSettings.shared.vpnType == .openVPN, UserSettings.shared.proto == "TCP" {
|
|
UserSettings.shared.killSwitchEnabled = false
|
|
view.show(enabled: false)
|
|
} else {
|
|
view.show(enabled: true)
|
|
}
|
|
|
|
view.killSwitch(enabled: UserSettings.shared.killSwitchEnabled)
|
|
}
|
|
}
|
|
|
|
func viewWillDisappear() { }
|
|
|
|
func killSwitch(in view: KilSwitchPanelViewInput, enabled: Bool) {
|
|
UserSettings.shared.killSwitchEnabled = enabled
|
|
}
|
|
|
|
func requirePopoverMessage() -> (String, String) {
|
|
return (NSLocalizedString("connection.killswitch.help.title", comment: ""),
|
|
NSLocalizedString("connection.killswitch.help.description", comment: ""))
|
|
}
|
|
}
|