getThreadRoots method

Future<GetThreadRootsResponse> getThreadRoots(
  1. String roomId, {
  2. Include? include,
  3. int? limit,
  4. String? from,
})

This API is used to paginate through the list of the thread roots in a given room.

Optionally, the returned list may be filtered according to whether the requesting user has participated in the thread.

roomId The room ID where the thread roots are located.

include Optional (default all) flag to denote which thread roots are of interest to the caller. When all, all thread roots found in the room are returned. When participated, only thread roots for threads the user has participated in will be returned.

limit Optional limit for the maximum number of thread roots to include per response. Must be an integer greater than zero.

Servers should apply a default value, and impose a maximum value to avoid resource exhaustion.

from A pagination token from a previous result. When not provided, the server starts paginating from the most recent event visible to the user (as per history visibility rules; topologically).

Implementation

Future<GetThreadRootsResponse> getThreadRoots(
  String roomId, {
  Include? include,
  int? limit,
  String? from,
}) async {
  final requestUri = Uri(
    path: '_matrix/client/v1/rooms/${Uri.encodeComponent(roomId)}/threads',
    queryParameters: {
      if (include != null) 'include': include.name,
      if (limit != null) 'limit': limit.toString(),
      if (from != null) 'from': from,
    },
  );
  final request = Request('GET', baseUri!.resolveUri(requestUri));
  request.headers['authorization'] = 'Bearer ${bearerToken!}';
  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 GetThreadRootsResponse.fromJson(json as Map<String, Object?>);
}