sendMediaMessage static method

Future<MediaMessage?> sendMediaMessage(
  1. MediaMessage mediaMessage, {
  2. required dynamic onSuccess(
    1. MediaMessage message
    )?,
  3. required dynamic onError(
    1. CometChatException excep
    )?,
})

send a media message like photos, videos & files.

filePath The file path object to be sent, need to prefix the path with 'file://' for IOS.

messageType type of the message that needs to be sent image,video,audio,file

receiver Group or User class from which UID and GUID will be fetched according to need.

receiverType ype of the receiver to whom the message is to be sent user,group.

On success, you will receive an object of the MediaMessage class containing all the information related to the sent media message.

The method could throw PlatformException with error codes specifying the cause

Implementation

static Future<MediaMessage?> sendMediaMessage(MediaMessage mediaMessage, {required Function(MediaMessage message)? onSuccess, required Function(CometChatException excep)? onError}) async {
  try {
    bool hasAttachment = false;
    String? attachmentFileName;
    String? attchemntFileExtension;
    String? attachmentFileUrl;
    String? attachmentMimeType;
    if (mediaMessage.attachment != null) {
      hasAttachment = true;
      attachmentFileName = mediaMessage.attachment?.fileName;
      attchemntFileExtension = mediaMessage.attachment?.fileExtension;
      attachmentFileUrl = mediaMessage.attachment?.fileUrl;
      attachmentMimeType = mediaMessage.attachment?.fileMimeType;
    }
    final result = await channel.invokeMethod('sendMediaMessage', {
      'receiverId': mediaMessage.receiverUid,
      'receiverType': mediaMessage.receiverType,
      'filePath': Platform.isIOS ? '${mediaMessage.file}' : mediaMessage.file,
      'messageType': mediaMessage.type,
      'caption': mediaMessage.caption,
      'metadata': json.encode(mediaMessage.metadata ?? {}),
      'hasAttachment': hasAttachment,
      'attachmentFileName': attachmentFileName,
      'attchemntFileExtension': attchemntFileExtension,
      'attachmentFileUrl': attachmentFileUrl,
      "attachmentMimeType": attachmentMimeType,
      'muid': mediaMessage.muid,
      'parentMessageId': mediaMessage.parentMessageId,
    });
    final res = MediaMessage.fromMap(result);
    if(onSuccess != null) onSuccess(res);
    return res;
  } on PlatformException catch (platformException) {
    if(onError != null) onError(CometChatException(platformException.code, platformException.details, platformException.message));
  } catch (e) {
    debugPrint("Error: $e");
    if(onError != null) onError(CometChatException(ErrorCode.errorUnhandledException, e.toString() , e.toString()));
  }
  return null;
}