leaveDirectory method
Opt out of the server's user directory
Implementation
Future<bool> leaveDirectory({PeerId? toServer}) async {
final serverId =
toServer ?? await _serverSelector.selectServer(config.preferredServers);
if (serverId == null) {
_logger.warning('No S&F server available for directory leave');
return false;
}
try {
final context = Context();
final stream = await host.newStream(
serverId,
[DocumentHandler.protocolId],
context,
).timeout(config.connectionTimeout);
final response = await DocumentHandler.leaveDirectory(
stream,
ownerPeerId: host.id,
).timeout(config.messageTimeout);
await stream.close();
// 204 No Content is the success response
if (response.status != 204) {
_logger.warning('DIRECTORY leave failed: ${response.status}');
return false;
}
_logger.info('Successfully left directory');
return true;
} on TimeoutException {
_logger.warning('DIRECTORY leave timed out');
return false;
} catch (e) {
_logger.warning('Failed to leave directory: $e');
return false;
}
}