createForwardMessage method

Future<V2TimValueCallback<V2TimMsgCreateInfoResult>> createForwardMessage(
  1. {required String msgID}
)

Implementation

Future<V2TimValueCallback<V2TimMsgCreateInfoResult>> createForwardMessage({required String msgID}) async {
  V2TimValueCallback<List<V2TimMessage>> findResult = await findMessages(messageIDList: [msgID]);
  if (findResult.code != TIMErrCode.ERR_SUCC.value) {
    return V2TimValueCallback(code: findResult.code, desc: findResult.desc);
  }

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

  V2TimMessage message = msgList[0];
  if (message.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 message.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());
      }
  }

  V2TimMessage v2timMessage = V2TimMessage(elemType: message.elemType);
  v2timMessage.elemList = message.elemList;
  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);
}