forwardMessages method

Future<void> forwardMessages(
  1. RCIMIWConversation forwardConversation,
  2. BuildContext context
)

Implementation

Future<void> forwardMessages(
    RCIMIWConversation forwardConversation, BuildContext context) async {
  String targetId = forwardConversation.targetId ?? '';
  String? channelId = forwardConversation.channelId;
  RCIMIWConversationType conversationType =
      forwardConversation.conversationType ?? RCIMIWConversationType.invalid;

  if (_chatProvider == null) return;

  RCKChatProvider chatProvider = _chatProvider!;
  for (var message in messagesToForward) {
    switch (message.messageType) {
      case RCIMIWMessageType.text:
        {
          RCIMIWTextMessage? forwardMsg = RCIMIWTextMessage.fromJson(
              (message as RCIMIWTextMessage).toJson())
            ..messageId = null
            ..targetId = targetId
            ..channelId = channelId
            ..conversationType = conversationType;

          chatProvider.sendMessage(forwardMsg, isForward: true);
          break;
        }
      case RCIMIWMessageType.voice:
        {
          RCIMIWVoiceMessage? forwardMsg = RCIMIWVoiceMessage.fromJson(
              (message as RCIMIWVoiceMessage).toJson())
            ..messageId = null
            ..targetId = targetId
            ..channelId = channelId
            ..conversationType = conversationType;

          chatProvider.sendMessage(forwardMsg, isForward: true);
          break;
        }
      case RCIMIWMessageType.image:
        {
          RCIMIWImageMessage? forwardMsg = RCIMIWImageMessage.fromJson(
              (message as RCIMIWImageMessage).toJson())
            ..messageId = null
            ..targetId = targetId
            ..channelId = channelId
            ..conversationType = conversationType;

          chatProvider.sendMessage(forwardMsg, isForward: true);
          break;
        }
      case RCIMIWMessageType.gif:
        {
          RCIMIWGIFMessage? forwardMsg = RCIMIWGIFMessage.fromJson(
              (message as RCIMIWGIFMessage).toJson())
            ..messageId = null
            ..targetId = targetId
            ..channelId = channelId
            ..conversationType = conversationType;

          chatProvider.sendMessage(forwardMsg, isForward: true);
          break;
        }

      case RCIMIWMessageType.file:
        {
          RCIMIWFileMessage? forwardMsg = RCIMIWFileMessage.fromJson(
              (message as RCIMIWFileMessage).toJson())
            ..messageId = null
            ..targetId = targetId
            ..channelId = channelId
            ..conversationType = conversationType;

          chatProvider.sendMessage(forwardMsg, isForward: true);
          break;
        }
      case RCIMIWMessageType.reference:
        {
          RCIMIWReferenceMessage? forwardMsg = RCIMIWReferenceMessage
              .fromJson((message as RCIMIWReferenceMessage).toJson())
            ..messageId = null
            ..targetId = targetId
            ..channelId = channelId
            ..conversationType = conversationType;

          chatProvider.sendMessage(forwardMsg, isForward: true);
          break;
        }

      case RCIMIWMessageType.sight:
        {
          RCIMIWSightMessage? forwardMsg = RCIMIWSightMessage.fromJson(
              (message as RCIMIWSightMessage).toJson())
            ..messageId = null
            ..targetId = targetId
            ..channelId = channelId
            ..conversationType = conversationType;

          chatProvider.sendMessage(forwardMsg, isForward: true);
          break;
        }
      case RCIMIWMessageType.nativeCustom:
        {
          RCIMIWNativeCustomMessage? forwardMsg = RCIMIWNativeCustomMessage
              .fromJson((message as RCIMIWNativeCustomMessage).toJson())
            ..messageId = null
            ..targetId = targetId
            ..channelId = channelId
            ..conversationType = conversationType;

          chatProvider.sendMessage(forwardMsg, isForward: true);
          break;
        }
      case RCIMIWMessageType.nativeCustomMedia:
        {
          RCIMIWNativeCustomMediaMessage? forwardMsg =
              RCIMIWNativeCustomMediaMessage.fromJson(
                  (message as RCIMIWNativeCustomMediaMessage).toJson())
                ..messageId = null
                ..targetId = targetId
                ..channelId = channelId
                ..conversationType = conversationType;

          chatProvider.sendMessage(forwardMsg, isForward: true);
          break;
        }
      // 根据需要增加其他消息类型的转发逻辑
      default:
        {
          // 不支持的消息类型,可跳过或显示提示
          break;
        }
    }
  }
}