setVisible method

void setVisible(
  1. bool visible
)

The conversation is (not) on screen. Visible clears unread and sends a read receipt for everything loaded.

Implementation

void setVisible(bool visible) {
  if (_state.visible == visible) return;
  _emit(_state.copyWith(visible: visible, unread: visible ? 0 : _state.unread));
  final conv = _state.conversation;
  if (visible && conv != null && _state.timeline.lastSeq > 0 && _state.foreground) {
    _send(ClientFrame.read(conversationId: conv.id, upToSeq: _state.timeline.lastSeq));
  }
  if (_socket?.ready ?? false) {
    _send(ClientFrame.appState(foreground: _state.foreground, conversationId: visible ? conv?.id : null));
  }
}