From 629c156eedcdbf5d5842aeeed08b9f790ed40904 Mon Sep 17 00:00:00 2001 From: Juraj Hilje Date: Tue, 10 Sep 2024 10:38:22 +0200 Subject: [PATCH] feat(account): update AccountViewController.swift --- .../AccountScreen/AccountViewController.swift | 81 +++++++++++++++++++ .../AccountScreen/View/AccountView.swift | 1 + IVPNClient/Scenes/Base.lproj/Main.storyboard | 28 +++++-- 3 files changed, 104 insertions(+), 6 deletions(-) diff --git a/IVPNClient/Scenes/AccountScreen/AccountViewController.swift b/IVPNClient/Scenes/AccountScreen/AccountViewController.swift index 36072ab40..9ca8c6a14 100644 --- a/IVPNClient/Scenes/AccountScreen/AccountViewController.swift +++ b/IVPNClient/Scenes/AccountScreen/AccountViewController.swift @@ -37,6 +37,7 @@ class AccountViewController: UITableViewController { private var serviceType = ServiceType.getType(currentPlan: Application.shared.serviceStatus.currentPlan) private var deleteSettings = false private var forceLogOut = false + private var accountHidden = false var sessionManager: SessionManager { let sessionManager = SessionManager() @@ -77,6 +78,24 @@ class AccountViewController: UITableViewController { } } + @IBAction func toggleAccountHidden(_ sender: Any) { + if accountHidden { + accountView.hideAccountButton.setImage(UIImage.init(systemName: "eye.fill"), for: .normal) + accountView.accountIdLabel.removeBlur() + accountView.accountIdLabel.alpha = 1 + accountView.qrCodeImage.removeBlur() + accountView.qrCodeImage.alpha = 1 + } else { + accountView.hideAccountButton.setImage(UIImage.init(systemName: "eye.slash.fill"), for: .normal) + accountView.accountIdLabel.addBlur(2) + accountView.accountIdLabel.alpha = 0.7 + accountView.qrCodeImage.addBlur(2) + accountView.qrCodeImage.alpha = 0.5 + } + + accountHidden = !accountHidden + } + // MARK: - View Lifecycle - override func viewDidLoad() { @@ -219,3 +238,65 @@ extension AccountViewController: JGProgressHUDDelegate { } } + +class BlurEffectView: UIVisualEffectView { + + var animator = UIViewPropertyAnimator(duration: 1, curve: .linear) + + var intensity = 1.0 + + override func layoutSubviews() { + super.layoutSubviews() + frame = superview?.bounds ?? CGRect.zero + setupBlur() + } + + override func didMoveToSuperview() { + guard superview != nil else { return } + backgroundColor = .clear + setupBlur() + } + + private func setupBlur() { + animator.stopAnimation(true) + effect = nil + + animator.addAnimations { [weak self] in + self?.effect = UIBlurEffect(style: .regular) + } + + if intensity > 0 && intensity <= 10 { + + let value = CGFloat(intensity)/10 + animator.fractionComplete = value + + } + else { + animator.fractionComplete = 0.05 + } + + } + + deinit { + animator.stopAnimation(true) + } + +} + +extension UIView { + + func addBlur(_ intensity: Double = 1.0) { + let blurEffectView = BlurEffectView() + blurEffectView.intensity = intensity + self.addSubview(blurEffectView) + } + + func removeBlur() { + for subview in self.subviews { + if subview is UIVisualEffectView { + subview.removeFromSuperview() + } + } + } + +} diff --git a/IVPNClient/Scenes/AccountScreen/View/AccountView.swift b/IVPNClient/Scenes/AccountScreen/View/AccountView.swift index a7e7d5066..a86739d4d 100644 --- a/IVPNClient/Scenes/AccountScreen/View/AccountView.swift +++ b/IVPNClient/Scenes/AccountScreen/View/AccountView.swift @@ -37,6 +37,7 @@ class AccountView: UITableView { @IBOutlet weak var deviceNameTitle: UILabel! @IBOutlet weak var deviceName: UILabel! @IBOutlet weak var header: UIView! + @IBOutlet weak var hideAccountButton: UIButton! // MARK: - Properties - diff --git a/IVPNClient/Scenes/Base.lproj/Main.storyboard b/IVPNClient/Scenes/Base.lproj/Main.storyboard index d360ed775..24fdd99ef 100644 --- a/IVPNClient/Scenes/Base.lproj/Main.storyboard +++ b/IVPNClient/Scenes/Base.lproj/Main.storyboard @@ -1,9 +1,9 @@ - + - + @@ -3069,13 +3069,13 @@ - @@ -4501,6 +4514,8 @@ + + @@ -4510,7 +4525,6 @@ - @@ -4641,6 +4655,7 @@ + @@ -4894,6 +4909,7 @@ +