     internal var subscription: Subscription? {
         didSet {
             guard let subscription = subscription?.validated() else { return }
+            lastSeen = subscription.lastSeen ?? Date()
             subscribe(for: subscription)
             messagesQuery = subscription.fetchMessagesQueryResults()
             messagesQueryToken = messagesQuery?.observe(handleDataUpdates)

        }
    }

    internal var messagesQueryToken: NotificationToken?
    internal var messagesQuery: Results<Message>?
    internal var onDataChanged: VoidCompletion?

    internal var lastSeen = Date()
    internal var requestingData = false
    internal var hasMoreData = true

    // MARK: Life Cycle Controls


    // MARK: Data Manipulation

    /**
     The array of values cached and already manipulated on this view model. This
     array is feeded from the Realm query, the observers on the query and the manipulations
     that are executed after getting the data.
     */
    internal var data: [AnyChatSection] = [] {
        didSet {
            onDataChanged?()
