setCollectionVisibility static method

Future<CollectionFrameResponse> setCollectionVisibility(
  1. P2PStream stream, {
  2. required PeerId ownerPeerId,
  3. required String path,
  4. required CollectionVisibility visibility,
})

Set who may read a collection (client-side ACCESS with action "set").

Owner only. The response's CollectionFrameResponse.visibility is the collection's visibility afterwards.

Implementation

static Future<CollectionFrameResponse> setCollectionVisibility(
  P2PStream stream, {
  required PeerId ownerPeerId,
  required String path,
  required CollectionVisibility visibility,
}) async {
  try {
    final requestBytes = CollectionFrame.encodeRequest(
      operation: 'ACCESS',
      ownerPeerId: ownerPeerId,
      path: path,
      accessAction: 'set',
      visibility: visibility.name,
    );

    await _writeFrameStatic(stream, requestBytes);
    final responseBytes = await _readFrameStatic(stream);
    return CollectionFrame.decodeResponse(responseBytes);
  } catch (e, stackTrace) {
    _logger.severe('Error setting collection visibility: $e', e, stackTrace);
    rethrow;
  }
}