diff options
| author | Andreas Lif <andreas.lif@shortcut.io> | 2022-08-16 16:40:04 +0200 |
|---|---|---|
| committer | Andreas Lif <andreas.lif@shortcut.io> | 2022-08-16 16:51:35 +0200 |
| commit | 45436649afe4ffe3bdf2808fd55026bfdcf419bf (patch) | |
| tree | 48bfb3050b7140194990468db1b55a0f64c850d0 | |
| parent | affa7a6e81a82a88abcf7a6bddf3c6e67f3d2a3d (diff) | |
| download | mullvadvpn-45436649afe4ffe3bdf2808fd55026bfdcf419bf.tar.xz mullvadvpn-45436649afe4ffe3bdf2808fd55026bfdcf419bf.zip | |
Replace status icon and activity indicator with StatusActivityView
| -rw-r--r-- | ios/MullvadVPN/LoginContentView.swift | 62 | ||||
| -rw-r--r-- | ios/MullvadVPN/LoginViewController.swift | 20 |
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 } } |
