setRoomVisibilityOnDirectory method
Sets the visibility of a given room in the server's published room directory.
Servers MAY implement additional access control checks, for instance, to ensure that a room's visibility can only be changed by the room creator or a server administrator.
roomId The room ID.
visibility The new visibility setting for the room.
Defaults to public.
Implementation
Future<void> setRoomVisibilityOnDirectory(
  String roomId, {
  Visibility? visibility,
}) async {
  final requestUri = Uri(
    path:
        '_matrix/client/v3/directory/list/room/${Uri.encodeComponent(roomId)}',
  );
  final request = Request('PUT', baseUri!.resolveUri(requestUri));
  request.headers['authorization'] = 'Bearer ${bearerToken!}';
  request.headers['content-type'] = 'application/json';
  request.bodyBytes = utf8.encode(
    jsonEncode({
      if (visibility != null) 'visibility': visibility.name,
    }),
  );
  final response = await httpClient.send(request);
  final responseBody = await response.stream.toBytes();
  if (response.statusCode != 200) unexpectedResponse(response, responseBody);
  final responseString = utf8.decode(responseBody);
  final json = jsonDecode(responseString);
  return ignore(json);
}