onDocumentRegistered method

  1. @override
void onDocumentRegistered(
  1. ClientSession session,
  2. String documentId
)
override

Called when session subscribes to a new document.

Implementation

@override
void onDocumentRegistered(ClientSession session, String documentId) {
  var awareness = _documentAwareness[documentId] ??
      DocumentAwareness(
        documentId: documentId,
        states: {},
      );
  final client = ClientAwareness(
    clientId: session.id,
    metadata: {},
  );

  awareness = awareness.copyWithUpdatedClient(client);

  _documentAwareness[documentId] = awareness;

  // send to all clients except the one that joined
  // the new incoming data
  unawaited(
    _broadcastAwarenessUpdate(
      documentId,
      session.id,
      excludeClientIds: [session.id],
    ),
  );
  unawaited(
    _sendAwarenessStateToClient(
      documentId,
      session.id,
    ),
  );

  _updateController(
    ServerAwarenessEvent(
      type: ServerAwarenessEventType.clientJoined,
      documentId: documentId,
      clientId: session.id,
    ),
  );
}