getUserInfo method

Future<Map<String, UserInfoProtocol>?> getUserInfo(
  1. List<String> userIds
)

Implementation

Future<Map<String, UserInfoProtocol>?> getUserInfo(
    List<String> userIds) async {
  final tmp = userInfosMap.values.where(
    (element) => userIds.contains(element.userId),
  );
  final ret = {for (var value in tmp) value.userId: value};

  if (tmp.length == userIds.length) {
    return ret;
  }

  List<String> unCachedUserIds = [];
  for (var element in userIds) {
    if (!userInfosMap.containsKey(element)) {
      unCachedUserIds.add(element);
    }
  }

  List<UserInfoProtocol> fetched =
      await ChatroomUIKitClient.instance.fetchUserInfos(
    userIds: unCachedUserIds,
  );

  ret.addAll({for (var value in fetched) value.userId: value});

  return ret;
}