summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ios/MullvadVPN/LoginViewController.swift4
-rw-r--r--ios/MullvadVPN/SelectLocationController.swift6
-rw-r--r--ios/MullvadVPN/SpinnerActivityIndicatorView.swift26
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()