getGroupMessageReadMemberList method

Future<V2TimValueCallback<V2TimGroupMessageReadMemberList>> getGroupMessageReadMemberList({
  1. required String messageID,
  2. required GetGroupMessageReadMemberListFilter filter,
  3. int nextSeq = 0,
  4. int count = 100,
})

Implementation

Future<V2TimValueCallback<V2TimGroupMessageReadMemberList>> getGroupMessageReadMemberList({
  required String messageID,
  required GetGroupMessageReadMemberListFilter filter,
  int nextSeq = 0,
  int count = 100,
}) async {
  try {
    final originalMessage = timeweb!.findMessage(messageID);
    final messageMap = jsToMap(originalMessage);
    final conversationID = messageMap['conversationID'] as String;
    final conversationType = messageMap['conversationType'] as String;
    final groupID = conversationID.replaceAll(conversationType, "");
    final filterParam = filter.index;
    final params = mapToJSObj({
      "message": originalMessage,
      "filter": filterParam,
      "count": count,
      "cursor": nextSeq == 0 ? '' : nextSeq.toString(),
    });
    final res = await wrappedPromiseToFuture(timeweb!.getGroupMessageReadMemberList(params));
    if (res.code == 0) {
      final responseData = jsToMap(res.data);
      final userIDList = responseData[filterParam == 0 ? 'readUserIDList' : 'unreadUserIDList'] as List;
      var memberInfoList = [];
      if (userIDList.isNotEmpty) {
        final response = await wrappedPromiseToFuture(timeweb!.getGroupMemberProfile(mapToJSObj({
          "groupID": groupID,
          "userIDList": userIDList,
        })));
        final memberList = jsToMap(response.data)['memberList'] as List;
        memberInfoList = GetGroupMemberList.formateGroupResult(memberList);
      }

      final responseValue = {
        "nextSeq": int.parse(responseData['cursor']),
        "isFinished": responseData['isCompleted'],
        "memberInfoList": memberInfoList,
      };
      return CommonUtils.returnSuccess<V2TimGroupMessageReadMemberList>(responseValue);
    }
    return CommonUtils.returnSuccess<V2TimGroupMessageReadMemberList>([]);
  } catch (error) {
    return CommonUtils.returnErrorForValueCb<V2TimGroupMessageReadMemberList>(error.toString());
  }
}