diff options
| -rw-r--r-- | ios/MullvadVPN/LoginViewController.swift | 4 | ||||
| -rw-r--r-- | ios/MullvadVPN/SelectLocationController.swift | 6 | ||||
| -rw-r--r-- | ios/MullvadVPN/SpinnerActivityIndicatorView.swift | 26 |
3 files changed, 16 insertions, 20 deletions
diff --git a/ios/MullvadVPN/LoginViewController.swift b/ios/MullvadVPN/LoginViewController.swift index e44ac1e454..30877664e8 100644 --- a/ios/MullvadVPN/LoginViewController.swift +++ b/ios/MullvadVPN/LoginViewController.swift @@ -171,7 +171,7 @@ class LoginViewController: UIViewController, UITextFieldDelegate, RootContainmen // controller. switch loginState { case .authenticating: - activityIndicator.isAnimating = true + activityIndicator.startAnimating() // Fallthrough to make sure that the settings button is disabled // in .authenticating and .success cases. @@ -182,7 +182,7 @@ class LoginViewController: UIViewController, UITextFieldDelegate, RootContainmen case .default, .failure: rootContainerController?.headerBarSettingsButton.isEnabled = true - activityIndicator.isAnimating = false + activityIndicator.stopAnimating() } updateDisplayedMessage() diff --git a/ios/MullvadVPN/SelectLocationController.swift b/ios/MullvadVPN/SelectLocationController.swift index f58d0c5c78..3a1d90d6ea 100644 --- a/ios/MullvadVPN/SelectLocationController.swift +++ b/ios/MullvadVPN/SelectLocationController.swift @@ -110,11 +110,11 @@ class SelectLocationController: UITableViewController { }) .receive(on: DispatchQueue.main) .handleEvents(receiveSubscription: { _ in - self.activityIndicator.isAnimating = true + self.activityIndicator.startAnimating() }, receiveCompletion: { _ in - self.activityIndicator.isAnimating = false + self.activityIndicator.stopAnimating() }, receiveCancel: { - self.activityIndicator.isAnimating = false + self.activityIndicator.stopAnimating() }) .sink(receiveCompletion: { (completion) in if case .failure(let error) = completion { diff --git a/ios/MullvadVPN/SpinnerActivityIndicatorView.swift b/ios/MullvadVPN/SpinnerActivityIndicatorView.swift index ea33c64024..2e8140c97f 100644 --- a/ios/MullvadVPN/SpinnerActivityIndicatorView.swift +++ b/ios/MullvadVPN/SpinnerActivityIndicatorView.swift @@ -14,7 +14,7 @@ private let kAnimationDuration = 0.6 @IBDesignable class SpinnerActivityIndicatorView: UIView { /// Thickness of the front and back circles - var thickness: CGFloat = 6 { + @IBInspectable var thickness: CGFloat = 6 { didSet { setLayersThickness() } @@ -34,17 +34,7 @@ private let kAnimationDuration = 0.6 } } - @IBInspectable var isAnimating: Bool = false { - didSet { - guard oldValue != isAnimating else { return } - - if isAnimating { - startAnimating() - } else { - stopAnimating() - } - } - } + private(set) var isAnimating = false fileprivate let frontCircle = CAShapeLayer() fileprivate let backCircle = CAShapeLayer() @@ -88,18 +78,24 @@ private let kAnimationDuration = 0.6 setFrontCircleLayerColor() } - // MARK: - Private + func startAnimating() { + guard !isAnimating else { return } + isAnimating = true - private func startAnimating() { isHidden = false addAnimation() } - private func stopAnimating() { + func stopAnimating() { + guard isAnimating else { return } + isAnimating = false + isHidden = true removeAnimation() } + // MARK: - Private + private func commonInit() { registerForAppStateNotifications() |
