send method

Future<void> send({
  1. required MeshDocument thread,
  2. required String path,
  3. required ChatMessage message,
  4. void onMessageSent(
    1. ChatMessage
    )?,
})

Implementation

Future<void> send({
  required MeshDocument thread,
  required String path,
  required ChatMessage message,
  void Function(ChatMessage)? onMessageSent,
}) async {
  if (message.text.trim().isNotEmpty || message.attachments.isNotEmpty) {
    insertMessage(thread: thread, message: message);

    final List<Future<void>> sentMessages = [];
    if (notifyOnSend) {
      for (final participant in getOnlineParticipants(thread)) {
        sentMessages.add(sendMessageToParticipant(participant: participant, path: path, message: message));
      }
    }

    outboundStatus.markSending(message.id);

    await Future.wait(sentMessages);

    outboundStatus.markDelivered(message.id);

    onMessageSent?.call(message);

    clear();
  }
}