queryMemberList method
Future<NIMResult<TeamMemberInfoListResult> >
queryMemberList(
- String teamId,
- NIMTeamType type, {
- NIMTeamMemberQueryOption? option,
override
查询群成员列表
teamId
群id
Implementation
@override
Future<NIMResult<TeamMemberInfoListResult>> queryMemberList(
String teamId, NIMTeamType type,
{NIMTeamMemberQueryOption? option}) async {
if (option == null) {
option = NIMTeamMemberQueryOption(
roleQueryType: NIMTeamMemberRoleQueryType.memberRoleQueryTypeAll);
}
var memberList = await NimCore.instance.teamService
.getTeamMemberList(teamId, type, option);
if (memberList.isSuccess && memberList.data?.memberList != null) {
var results = memberList.data!.memberList!
.map((e) => UserInfoWithTeam(null, e))
.toList();
//先使用本地缓存数据填充用户信息和好友信息
_fillUserInfoWithLocalCache(results);
//剩余本地没有用户信息的用户在使用远端用户信息填充
var accIdList = results
.where((element) => element.userInfo == null)
.map((e) => e.teamInfo.accountId)
.toList();
int totalCount = accIdList.length;
int maxCount = 150;
int startIndex = 0;
int endIndex = min(totalCount, startIndex + maxCount);
//remote 接口一次最多150个,分批请求
while (startIndex < endIndex) {
var map =
await _getUserInfoMap(accIdList.sublist(startIndex, endIndex));
results.where((element) => element.userInfo == null).forEach((element) {
element.userInfo = map[element.teamInfo.accountId];
});
startIndex = endIndex;
endIndex = min(totalCount, endIndex + maxCount);
}
var infoResult = TeamMemberInfoListResult(
finished: memberList.data!.finished,
nextToken: memberList.data!.nextToken,
memberList: results);
return NIMResult.success(data: infoResult);
}
return NIMResult(memberList.code, null, memberList.errorDetails);
}