createMergerMessage method
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);
}