createMergerMessage method

Future<V2TimValueCallback<V2TimMsgCreateInfoResult>> createMergerMessage({
  1. List<V2TimMessage>? msgList,
  2. List<String>? msgIDList,
  3. required String title,
  4. required List<String> abstractList,
  5. required String compatibleText,
})

Implementation

Future<V2TimValueCallback<V2TimMsgCreateInfoResult>> createMergerMessage({List<V2TimMessage>? msgList, List<String>? msgIDList, required String title, required List<String> abstractList, required String compatibleText}) async {
  if (msgList == null || msgList.isEmpty) {
    V2TimValueCallback<List<V2TimMessage>> findResult = await findMessages(messageIDList: msgIDList ?? []);
    if (findResult.code != TIMErrCode.ERR_SUCC.value) {
      return V2TimValueCallback(code: findResult.code, desc: findResult.desc);
    }

    msgList = findResult.data!;
    if (msgList.isEmpty) {
      return V2TimValueCallback(code: TIMErrCode.ERR_INVALID_PARAMETERS.value, desc: 'message not found', data: V2TimMsgCreateInfoResult());
    }

    for (V2TimMessage msg in msgList) {
      if (msg.status != MessageStatus.V2TIM_MSG_STATUS_SEND_SUCC) {
        return V2TimValueCallback(code: TIMErrCode.ERR_INVALID_PARAMETERS.value, desc: 'message status must be successful', data: V2TimMsgCreateInfoResult());
      }

      for (var elem in msg.elemList) {
        if (elem is V2TIMElem && elem.elemType == MessageElemType.V2TIM_ELEM_TYPE_GROUP_TIPS) {
          return V2TimValueCallback(code: TIMErrCode.ERR_INVALID_PARAMETERS.value, desc: 'group tips message is not support', data: V2TimMsgCreateInfoResult());
        }
      }
    }
  }

  List<String> abstractListAdjust = abstractList.take(_MAX_ABSTRACT_COUNT).map((e) => _safeSubstring(e, _MAX_ABSTRACT_LENGTH)).toList();
  V2TimMergerElem mergerElem = V2TimMergerElem(title: title, abstractList: abstractListAdjust, compatibleText: compatibleText, messageList: msgList);
  int elemType = MessageElemType.V2TIM_ELEM_TYPE_MERGER;
  V2TimMessage v2timMessage = V2TimMessage(elemType: elemType);
  v2timMessage.mergerElem = mergerElem;
  v2timMessage.elemList.add(mergerElem);
  v2timMessage.isForwardMessage = true;

  String tempID = _createMessageTempID();
  v2timMessage.id = tempID;
  messageIDMap.addAll({tempID: v2timMessage});

  V2TimMsgCreateInfoResult result = V2TimMsgCreateInfoResult(id: tempID, messageInfo: v2timMessage);
  return V2TimValueCallback<V2TimMsgCreateInfoResult>.fromObject(result);
}