forwardMessage method

void forwardMessage(
  1. NIMMessage message,
  2. String conversationId, {
  3. String? postScript,
})

Implementation

void forwardMessage(
  NIMMessage message,
  String conversationId, {
  String? postScript,
}) async {
  if (await haveConnectivity()) {
    NIMMessageAIConfigParams? aiConfigParams;

    if ((await ConversationIdUtil().conversationType(conversationId)).data ==
        NIMConversationType.p2p) {
      NIMAIUser? aiAgent = AIUserManager.instance.getAIUserById(
        ChatKitUtils.getConversationTargetId(conversationId),
      );
      if (aiAgent != null) {
        final aiStreamMode = await IMKitClient.enableAIStream;
        // AI 参数处理
        aiConfigParams = NIMMessageAIConfigParams(
          accountId: aiAgent.accountId,
          aiStream: aiStreamMode,
        );
        if (ChatMessageHelper.getAIContentMsg(message)?.isNotEmpty == true) {
          NIMAIModelCallContent content = NIMAIModelCallContent(
            type: 0,
            msg: ChatMessageHelper.getAIContentMsg(message),
          );
          aiConfigParams.content = content;
        }
      }
    }

    final params = await ChatMessageHelper.getSenderParams(
      message,
      conversationId,
    );
    params.aiConfig = aiConfigParams;
    ChatMessageRepo.forwardMessage(
      message,
      conversationId,
      params: params,
    ).then((value) async {
      if (value.code == ChatMessageRepo.errorInBlackList) {
        ChatMessageRepo.saveTipsMessage(
          conversationId,
          S.of().chatMessageSendFailedByBlackList,
        );
      }
      if (postScript?.isNotEmpty == true) {
        //处理AI Config
        NIMMessageAIConfigParams? aiConfigParams;

        if ((await ConversationIdUtil().conversationType(
              conversationId,
            ))
                .data ==
            NIMConversationType.p2p) {
          NIMAIUser? aiAgent = AIUserManager.instance.getAIUserById(
            ChatKitUtils.getConversationTargetId(conversationId),
          );
          if (aiAgent != null) {
            final aiStreamMode = await IMKitClient.enableAIStream;
            // AI 参数处理
            aiConfigParams = NIMMessageAIConfigParams(
              accountId: aiAgent.accountId,
              aiStream: aiStreamMode,
            );
            NIMAIModelCallContent content = NIMAIModelCallContent(
              type: 0,
              msg: postScript,
            );
            aiConfigParams.content = content;
          }
        }
        ChatMessageRepo.sendTextMessageWithMessageAck(
          conversationId: conversationId,
          text: postScript!,
          aiConfigParams: aiConfigParams,
        ).then((msgSend) {
          if (msgSend.code == ChatMessageRepo.errorInBlackList) {
            ChatMessageRepo.saveTipsMessage(
              conversationId,
              S.of().chatMessageSendFailedByBlackList,
            );
          }
        });
      }
      notifyListeners();
    });
  }
}