peekEvents method
This will listen for new events related to a particular room and return
them to the caller. This will block until an event is received, or until
the timeout is reached.
This API is the same as the normal /events endpoint, but can be
called by users who have not joined the room.
Note that the normal /events endpoint has been deprecated. This
API will also be deprecated at some point, but its replacement is not
yet known.
from The token to stream from. This token is either from a previous
request to this API or from the initial sync API.
timeout The maximum time in milliseconds to wait for an event.
roomId The room ID for which events should be returned.
Implementation
Future<PeekEventsResponse> peekEvents({
String? from,
int? timeout,
String? roomId,
}) async {
final requestUri = Uri(
path: '_matrix/client/v3/events',
queryParameters: {
if (from != null) 'from': from,
if (timeout != null) 'timeout': timeout.toString(),
if (roomId != null) 'room_id': roomId,
},
);
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 PeekEventsResponse.fromJson(json as Map<String, Object?>);
}