]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
WireGuardApp: Animate switch control in TunnelListCell
authorAndrej Mihajlov <and@mullvad.net>
Tue, 15 Dec 2020 13:21:21 +0000 (14:21 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 15 Dec 2020 14:56:22 +0000 (15:56 +0100)
Signed-off-by: Andrej Mihajlov <and@mullvad.net>
Sources/WireGuardApp/UI/iOS/View/TunnelListCell.swift

index 1a8520da8f118bbfd99da9640472c8c5d4ee596a..636443e7d27189f33bc9a1c08ffb993620419d1c 100644 (file)
@@ -5,16 +5,16 @@ import UIKit
 
 class TunnelListCell: UITableViewCell {
     var tunnel: TunnelContainer? {
-        didSet(value) {
+        didSet {
             // Bind to the tunnel's name
             nameLabel.text = tunnel?.name ?? ""
             nameObservationToken = tunnel?.observe(\.name) { [weak self] tunnel, _ in
                 self?.nameLabel.text = tunnel.name
             }
             // Bind to the tunnel's status
-            update(from: tunnel?.status)
+            update(from: tunnel?.status, animated: false)
             statusObservationToken = tunnel?.observe(\.status) { [weak self] tunnel, _ in
-                self?.update(from: tunnel.status)
+                self?.update(from: tunnel.status, animated: true)
             }
         }
     }
@@ -82,12 +82,12 @@ class TunnelListCell: UITableViewCell {
         onSwitchToggled?(statusSwitch.isOn)
     }
 
-    private func update(from status: TunnelStatus?) {
+    private func update(from status: TunnelStatus?, animated: Bool) {
         guard let status = status else {
-            reset()
+            reset(animated: animated)
             return
         }
-        statusSwitch.isOn = !(status == .deactivating || status == .inactive)
+        statusSwitch.setOn(!(status == .deactivating || status == .inactive), animated: animated)
         statusSwitch.isUserInteractionEnabled = (status == .inactive || status == .active)
         if status == .inactive || status == .active {
             busyIndicator.stopAnimating()
@@ -105,14 +105,14 @@ class TunnelListCell: UITableViewCell {
         statusSwitch.isEnabled = !editing
     }
 
-    private func reset() {
-        statusSwitch.isOn = false
+    private func reset(animated: Bool) {
+        statusSwitch.setOn(false, animated: animated)
         statusSwitch.isUserInteractionEnabled = false
         busyIndicator.stopAnimating()
     }
 
     override func prepareForReuse() {
         super.prepareForReuse()
-        reset()
+        reset(animated: false)
     }
 }