From bc5131d7fa7e09494938b4f66a8f4ef58e10be0d Mon Sep 17 00:00:00 2001 From: Rafael Kellermann Streit Date: Mon, 25 Sep 2017 09:07:30 -0300 Subject: [PATCH] Show activityIndicator when connecting to the server --- .../Chat/ChatControllerHeaderStatus.swift | 21 +++++++++++++++++++ .../Views/Chat/ChatHeaderViewStatus.swift | 8 ++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Rocket.Chat/Controllers/Chat/ChatControllerHeaderStatus.swift b/Rocket.Chat/Controllers/Chat/ChatControllerHeaderStatus.swift index 82ad2d03f3..7c2080e018 100644 --- a/Rocket.Chat/Controllers/Chat/ChatControllerHeaderStatus.swift +++ b/Rocket.Chat/Controllers/Chat/ChatControllerHeaderStatus.swift @@ -14,6 +14,7 @@ extension ChatViewController { chatHeaderViewStatus?.removeFromSuperview() if let headerView = ChatHeaderViewStatus.instantiateFromNib() { + headerView.delegate = self headerView.translatesAutoresizingMaskIntoConstraints = false headerView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 44) view.addSubview(headerView) @@ -47,3 +48,23 @@ extension ChatViewController { } } + +// MARK: ChatHeaderViewStatusDelegate + +extension ChatViewController: ChatHeaderViewStatusDelegate { + + func viewStatusButtonRefreshDidPressed(_ view: ChatHeaderViewStatus) { + view.activityIndicator.startAnimating() + view.buttonRefresh.isHidden = true + + SocketManager.reconnect() + + DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) { + if !SocketManager.isConnected() { + view.activityIndicator.stopAnimating() + view.buttonRefresh.isHidden = false + } + } + } + +} diff --git a/Rocket.Chat/Views/Chat/ChatHeaderViewStatus.swift b/Rocket.Chat/Views/Chat/ChatHeaderViewStatus.swift index cb48c635ab..97fc6d79ec 100644 --- a/Rocket.Chat/Views/Chat/ChatHeaderViewStatus.swift +++ b/Rocket.Chat/Views/Chat/ChatHeaderViewStatus.swift @@ -8,10 +8,16 @@ import UIKit +protocol ChatHeaderViewStatusDelegate: class { + func viewStatusButtonRefreshDidPressed(_ view: ChatHeaderViewStatus) +} + final class ChatHeaderViewStatus: UIView { static let defaultHeight = CGFloat(44) + weak var delegate: ChatHeaderViewStatusDelegate? + @IBOutlet weak var labelTitle: UILabel! { didSet { labelTitle.lineBreakMode = .byTruncatingMiddle @@ -32,7 +38,7 @@ final class ChatHeaderViewStatus: UIView { // MARK: IBAction @IBAction func buttonRefreshDidPressed(_ sender: Any) { - SocketManager.reconnect() + delegate?.viewStatusButtonRefreshDidPressed(self) } }