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