createMessage method

Future<void> createMessage({
  1. required String messageId,
  2. required String senderId,
  3. required String targetId,
  4. required List<int> payload,
  5. required int ttl,
  6. String? signature,
  7. MediaType mediaType = MediaType.text,
  8. String? mediaFileName,
  9. String? mediaMimeType,
  10. int? mediaFileSize,
  11. String? mediaHash,
  12. String? mediaLocalPath,
  13. MediaAvailability mediaAvailability = MediaAvailability.notApplicable,
  14. Uint8List? mediaThumbnail,
})

Convenience: insert a new outgoing message created by the local user.

Usage:

await db.createMessage(
  messageId: uuid.v4(),
  senderId: localNodeId,
  targetId: recipientNodeId,  // or '*' for broadcast
  payload: utf8.encode('Hello mesh!'),
  ttl: kAirpassDefaultMaxHops,
);

Implementation

Future<void> createMessage({
  required String messageId,
  required String senderId,
  required String targetId,
  required List<int> payload,
  required int ttl,
  String? signature,
  // Media fields (all optional — text messages omit these)
  MediaType mediaType = MediaType.text,
  String? mediaFileName,
  String? mediaMimeType,
  int? mediaFileSize,
  String? mediaHash,
  String? mediaLocalPath,
  MediaAvailability mediaAvailability = MediaAvailability.notApplicable,
  Uint8List? mediaThumbnail,
}) {
  return into(messages).insert(MessagesCompanion.insert(
    messageId: messageId,
    senderId: senderId,
    targetId: targetId,
    payload: Uint8List.fromList(payload),
    createdAt: DateTime.now().millisecondsSinceEpoch,
    ttl: ttl,
    signature: Value(signature),
    mediaType: Value(mediaType.value),
    mediaFileName: Value(mediaFileName),
    mediaMimeType: Value(mediaMimeType),
    mediaFileSize: Value(mediaFileSize),
    mediaHash: Value(mediaHash),
    mediaLocalPath: Value(mediaLocalPath),
    mediaAvailability: Value(mediaAvailability.value),
    mediaThumbnail: Value(mediaThumbnail),
  ));
}