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
  _broadcastAwarenessUpdate(
    documentId,
    session.id,
    excludeClientIds: [session.id],
  );
  _sendAwarenessStateToClient(
    documentId,
    session.id,
  );

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