joinDirectory static method
Join server directory (client-side)
Implementation
static Future<DocumentFrameResponse> joinDirectory(
P2PStream stream, {
required PeerId ownerPeerId,
required String displayName,
String? bio,
String? avatarHash,
Map<String, dynamic>? extras,
}) async {
try {
final listing = <String, dynamic>{
'displayName': displayName,
if (bio != null) 'bio': bio,
if (avatarHash != null) 'avatarHash': avatarHash,
if (extras != null) 'extras': extras,
};
final requestData = <String, dynamic>{
'operation': 'DIRECTORY',
'ownerPeerId': ownerPeerId.toBase58(),
'directoryAction': 'join',
'body': base64Encode(utf8.encode(jsonEncode(listing))),
};
final requestBytes =
Uint8List.fromList(utf8.encode(jsonEncode(requestData)));
await _writeFrameStatic(stream, requestBytes);
final responseBytes = await _readFrameStatic(stream);
return DocumentFrame.decodeResponse(responseBytes);
} catch (e, stackTrace) {
_logger.severe('Error joining directory: $e', e, stackTrace);
rethrow;
}
}