fetchMembersAttributes method

Future<Map<String, Map<String, String>>> fetchMembersAttributes({
  1. required String groupId,
  2. required List<String> userIds,
  3. List<String>? keys,
})

Gets custom attributes of multiple group members by attribute keys.

Param groupId The group ID. Param userIds The list of user IDs of group members (max 10 users). Param keys The list of attribute keys to retrieve.

Returns Member attributes in format: { userId: { key: value } }.

Throws Exception description, see ChatError.

Implementation

Future<Map<String, Map<String, String>>> fetchMembersAttributes({
  required String groupId,
  required List<String> userIds,
  List<String>? keys,
}) async {
  try {
    Map req = {'groupId': groupId, 'userIds': userIds};
    req.putIfNotNull("keys", keys);
    Map result = await platform_interface.Client.instance.groupManager.callNativeMethod(
        ChatMethodKeys.fetchMembersAttributesFromGroup, req);
    ChatError.hasErrorFromResult(result);
    var map = result[ChatMethodKeys.fetchMembersAttributesFromGroup];
    Map<String, Map<String, String>> ret = {};
    if (map is Map) {
      for (var element in map.keys) {
        if (map[element] is Map) {
          Map<String, String> value =
              Map<String, String>.from(map[element] ?? {});
          ret[element] = value;
        }
      }
    }
    return ret;
  } catch (e) {
    rethrow;
  }
}