summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndreas Lif <andreas.lif@shortcut.io>2022-08-16 16:40:04 +0200
committerAndreas Lif <andreas.lif@shortcut.io>2022-08-16 16:51:35 +0200
commit45436649afe4ffe3bdf2808fd55026bfdcf419bf (patch)
tree48bfb3050b7140194990468db1b55a0f64c850d0
parentaffa7a6e81a82a88abcf7a6bddf3c6e67f3d2a3d (diff)
downloadmullvadvpn-45436649afe4ffe3bdf2808fd55026bfdcf419bf.tar.xz
mullvadvpn-45436649afe4ffe3bdf2808fd55026bfdcf419bf.zip
Replace status icon and activity indicator with StatusActivityView
-rw-r--r--ios/MullvadVPN/LoginContentView.swift62
-rw-r--r--ios/MullvadVPN/LoginViewController.swift20
2 files changed, 16 insertions, 66 deletions
diff --git a/ios/MullvadVPN/LoginContentView.swift b/ios/MullvadVPN/LoginContentView.swift
index a89d6c80ef..07f63631bb 100644
--- a/ios/MullvadVPN/LoginContentView.swift
+++ b/ios/MullvadVPN/LoginContentView.swift
@@ -40,11 +40,10 @@ class LoginContentView: UIView {
return wrapperView
}()
- let statusImageView: StatusImageView = {
- let imageView = StatusImageView(style: .failure)
- imageView.translatesAutoresizingMaskIntoConstraints = false
- imageView.alpha = 0
- return imageView
+ let statusActivityView: StatusActivityView = {
+ let statusActivityView = StatusActivityView(state: .hidden)
+ statusActivityView.translatesAutoresizingMaskIntoConstraints = false
+ return statusActivityView
}()
let contentContainer: UIView = {
@@ -95,13 +94,6 @@ class LoginContentView: UIView {
return button
}()
- let activityIndicator: SpinnerActivityIndicatorView = {
- let view = SpinnerActivityIndicatorView(style: .large)
- view.tintColor = .white
- view.translatesAutoresizingMaskIntoConstraints = false
- return view
- }()
-
private var isStatusImageVisible = false
private var contentContainerBottomConstraint: NSLayoutConstraint?
@@ -119,7 +111,6 @@ class LoginContentView: UIView {
self?.contentContainerBottomConstraint?.constant = adjustment
self?.layoutIfNeeded()
- self?.updateStatusImageVisibility(animated: false)
}
)
@@ -130,46 +121,13 @@ class LoginContentView: UIView {
fatalError("init(coder:) has not been implemented")
}
- func setStatusImage(style: StatusImageView.Style?, visible: Bool, animated: Bool) {
- if let style = style {
- statusImageView.style = style
- }
-
- isStatusImageVisible = visible
- updateStatusImageVisibility(animated: animated)
- }
-
- private func updateStatusImageVisibility(animated: Bool) {
- let statusImageFrame = statusImageView.convert(statusImageView.bounds, to: self)
- let shouldShow = isStatusImageVisible && safeAreaLayoutGuide.layoutFrame
- .contains(statusImageFrame)
-
- let actions = {
- // Only display the status image if it doesn't overlap the safe area layout guide.
- if shouldShow {
- self.statusImageView.alpha = 1
- } else {
- self.statusImageView.alpha = 0
- }
- }
-
- if animated {
- UIView.animate(withDuration: 0.25) {
- actions()
- }
- } else {
- actions()
- }
- }
-
private func addSubviews() {
formContainer.addSubview(titleLabel)
formContainer.addSubview(messageLabel)
formContainer.addSubview(accountInputGroupWrapper)
accountInputGroupWrapper.addSubview(accountInputGroup)
- contentContainer.addSubview(activityIndicator)
- contentContainer.addSubview(statusImageView)
+ contentContainer.addSubview(statusActivityView)
contentContainer.addSubview(formContainer)
footerContainer.addSubview(footerLabel)
@@ -209,8 +167,11 @@ class LoginContentView: UIView {
createAccountButton.bottomAnchor
.constraint(equalTo: footerContainer.layoutMarginsGuide.bottomAnchor),
- statusImageView.centerXAnchor.constraint(equalTo: contentContainer.centerXAnchor),
- formContainer.topAnchor.constraint(equalTo: statusImageView.bottomAnchor, constant: 30),
+ statusActivityView.centerXAnchor.constraint(equalTo: contentContainer.centerXAnchor),
+ formContainer.topAnchor.constraint(
+ equalTo: statusActivityView.bottomAnchor,
+ constant: 30
+ ),
formContainer.centerYAnchor.constraint(
equalTo: contentContainer.centerYAnchor,
constant: -20
@@ -219,9 +180,6 @@ class LoginContentView: UIView {
formContainer.trailingAnchor.constraint(equalTo: contentContainer.trailingAnchor),
formContainer.bottomAnchor.constraint(equalTo: accountInputGroupWrapper.bottomAnchor),
- activityIndicator.centerXAnchor.constraint(equalTo: statusImageView.centerXAnchor),
- activityIndicator.centerYAnchor.constraint(equalTo: statusImageView.centerYAnchor),
-
titleLabel.topAnchor.constraint(equalTo: formContainer.topAnchor),
titleLabel.leadingAnchor
.constraint(equalTo: formContainer.layoutMarginsGuide.leadingAnchor),
diff --git a/ios/MullvadVPN/LoginViewController.swift b/ios/MullvadVPN/LoginViewController.swift
index 20890e4ecf..6e363a6b25 100644
--- a/ios/MullvadVPN/LoginViewController.swift
+++ b/ios/MullvadVPN/LoginViewController.swift
@@ -245,14 +245,6 @@ class LoginViewController: UIViewController, RootContainment {
private func loginStateDidChange() {
contentView.accountInputGroup.setLoginState(loginState, animated: true)
- switch loginState {
- case .authenticating:
- contentView.activityIndicator.startAnimating()
-
- case .success, .default, .failure:
- contentView.activityIndicator.stopAnimating()
- }
-
updateDisplayedMessage()
updateStatusIcon()
updateCreateButtonEnabled()
@@ -261,13 +253,13 @@ class LoginViewController: UIViewController, RootContainment {
private func updateStatusIcon() {
switch loginState {
case .failure:
- contentView.setStatusImage(style: .failure, visible: true, animated: true)
-
+ contentView.statusActivityView.state = .failure
case .success:
- contentView.setStatusImage(style: .success, visible: true, animated: true)
-
- case .default, .authenticating:
- contentView.setStatusImage(style: nil, visible: false, animated: true)
+ contentView.statusActivityView.state = .success
+ case .authenticating:
+ contentView.statusActivityView.state = .activity
+ case .default:
+ contentView.statusActivityView.state = .hidden
}
}