send method
void
send({
- required MeshDocument thread,
- required String path,
- required ChatMessage message,
- void onMessageSent()?,
Implementation
void send({
required MeshDocument thread,
required String path,
required ChatMessage message,
void Function(ChatMessage)? onMessageSent,
}) async {
if (message.text.trim().isNotEmpty || message.attachments.isNotEmpty) {
final messages = thread.root.getChildren().whereType<MeshElement>().firstWhere((x) => x.tagName == "messages");
final m = messages.createChildElement("message", {
"id": const Uuid().v4().toString(),
"text": message.text,
"created_at": DateTime.now().toUtc().toIso8601String(),
"author_name": room.localParticipant!.getAttribute("name"),
"author_ref": null,
});
for (final path in message.attachments) {
m.createChildElement("file", {"path": path});
}
for (final participant in getOnlineParticipants(thread)) {
room.messaging.sendMessage(
to: participant,
type: "chat",
message: {
"path": path,
"text": message.text,
"attachments": message.attachments.map((a) => {"path": a}).toList(),
},
);
}
onMessageSent?.call(message);
clear();
}
}