Message.system constructor

const Message.system({
  1. required MessageID id,
  2. required UserID authorId,
  3. MessageID? replyToMessageId,
  4. @EpochDateTimeConverter() DateTime? createdAt,
  5. @EpochDateTimeConverter() DateTime? deletedAt,
  6. @EpochDateTimeConverter() DateTime? failedAt,
  7. @EpochDateTimeConverter() DateTime? sentAt,
  8. @EpochDateTimeConverter() DateTime? deliveredAt,
  9. @EpochDateTimeConverter() DateTime? seenAt,
  10. @EpochDateTimeConverter() DateTime? updatedAt,
  11. Map<String, List<UserID>>? reactions,
  12. bool? pinned,
  13. Map<String, dynamic>? metadata,
  14. MessageStatus? status,
  15. required String text,
})

Creates a system message (e.g., "User joined the chat").

Implementation

const factory Message.system({
  /// Unique identifier for the message.
  required MessageID id,

  /// ID of the user associated with the system event (often a system ID).
  required UserID authorId,

  /// ID of the message this one is replying to (usually null for system messages).
  MessageID? replyToMessageId,

  /// Timestamp when the system event occurred.
  @EpochDateTimeConverter() DateTime? createdAt,

  /// Timestamp when the message was marked as deleted.
  @EpochDateTimeConverter() DateTime? deletedAt,

  /// Timestamp when the message failed to send (usually null for system messages).
  @EpochDateTimeConverter() DateTime? failedAt,

  /// Timestamp when the message was successfully sent (usually null for system messages).
  @EpochDateTimeConverter() DateTime? sentAt,

  /// Timestamp when the message was delivered (usually null for system messages).
  @EpochDateTimeConverter() DateTime? deliveredAt,

  /// Timestamp when the message was seen (usually null for system messages).
  @EpochDateTimeConverter() DateTime? seenAt,

  /// Timestamp when the message was last updated.
  @EpochDateTimeConverter() DateTime? updatedAt,

  /// Map of reaction keys to lists of user IDs who reacted.
  Map<String, List<UserID>>? reactions,

  /// Indicates if the message is pinned.
  bool? pinned,

  /// Additional custom metadata associated with the message.
  Map<String, dynamic>? metadata,

  /// Status of the message. Takes precedence over the timestamp based status.
  /// If not provided, the status is determined by createdAt, sentAt, seenAt etc.
  MessageStatus? status,

  /// The text content of the system message.
  required String text,
}) = SystemMessage;