fetchUserInfoByIdWithExpireTime method Null safety
- List<
String> userIds, - {int expireTime = 3600}
获取指定id的用户的用户属性,
userIds
需要获取的环信id;
expireTime
过期时间,单位秒。如果之前获取过, 如果距当前时间小于过期时间则不会重复获取
Implementation
Future<Map<String, EMUserInfo>> fetchUserInfoByIdWithExpireTime(
List<String> userIds,
{int expireTime = 3600}) async {
List<String> needReqIds = userIds
.where((element) =>
!_effectiveUserInfoMap.containsKey(element) ||
(_effectiveUserInfoMap.containsKey(element) &&
DateTime.now().millisecondsSinceEpoch -
_effectiveUserInfoMap[element]!.expireTime >
expireTime * 1000))
.toList();
Map<String, EMUserInfo> resultMap = Map();
userIds.forEach((element) {
if (_effectiveUserInfoMap.containsKey(element)) {
resultMap[element] = _effectiveUserInfoMap[element]!;
}
});
if (needReqIds.length == 0) {
return resultMap;
}
Map req = {'userIds': needReqIds};
Map result =
await _channel.invokeMethod(EMSDKMethod.fetchUserInfoById, req);
EMError.hasErrorFromResult(result);
result[EMSDKMethod.fetchUserInfoById]?.forEach((key, value) {
EMUserInfo eUserInfo = EMUserInfo.fromJson(value);
resultMap[key] = eUserInfo;
_effectiveUserInfoMap[key] = eUserInfo;
});
return resultMap;
}