getKeysChanges method

Future<GetKeysChangesResponse> getKeysChanges(
  1. String from,
  2. String to
)

Gets a list of users who have updated their device identity keys since a previous sync token.

The server should include in the results any users who:

  • currently share a room with the calling user (ie, both users have membership state join); and
  • added new device identity keys or removed an existing device with identity keys, between from and to.

from The desired start point of the list. Should be the next_batch field from a response to an earlier call to /sync. Users who have not uploaded new device identity keys since this point, nor deleted existing devices with identity keys since then, will be excluded from the results.

to The desired end point of the list. Should be the next_batch field from a recent call to /sync - typically the most recent such call. This may be used by the server as a hint to check its caches are up to date.

Implementation

Future<GetKeysChangesResponse> getKeysChanges(String from, String to) async {
  final requestUri = Uri(
    path: '_matrix/client/v3/keys/changes',
    queryParameters: {
      'from': from,
      'to': to,
    },
  );
  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 GetKeysChangesResponse.fromJson(json as Map<String, Object?>);
}