Files
2021-09-10 09:06:18 +03:00

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: ""))
}
}