         updateMessagesQueryNotificationBlock()
         loadMoreMessagesFrom(date: nil)
         subscribe(for: subscription)
-    }
-
-    func registerTypingEvent(_ subscription: Subscription) {
-        // TODO: Replace
-//        typingIndicatorView?.interval = 0
-        guard let user = AuthManager.currentUser() else { return Log.debug("Could not register TypingEvent") }
-
-        let loggedUsername = user.username
-        SubscriptionManager.subscribeTypingEvent(subscription) { [weak self] username, flag in
-            guard let username = username, username != loggedUsername else { return }
-
-            DispatchQueue.main.async {
-                let isAtBottom = self?.chatLogIsAtBottom()
-
-                // TODO: Replace
-                if flag {
-//                    self?.typingIndicatorView?.insertUsername(username)
-                } else {
-//                    self?.typingIndicatorView?.removeUsername(username)
-                }
-
-                if let isAtBottom = isAtBottom,
-                    isAtBottom == true {
-                    self?.scrollToBottom(true)
-                }
-            }
-        }
     }
 
     private func updateMessagesQueryNotificationBlock() {

        dataController.invalidateLayout(for: nil)
        collectionView.setNeedsLayout()
        collectionView.reloadData()
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(true)

        if let subscription = subscription?.validated() {
            unsubscribe(for: subscription)
        }
    }

    override func viewWillLayoutSubviews() {

        updateEmptyState()

        chatTitleView?.state = SocketManager.sharedInstance.state
    }

    override func viewDidAppear(_ animated: Bool) {
