Message class sealed

Base class for all message types.

Uses a sealed class hierarchy with Freezed for immutability and union types. The type field serves as the discriminator for JSON serialization/deserialization.

Annotations
  • @Freezed.new(unionKey: 'type', fallbackUnion: 'unsupported')

Constructors

Message.audio({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<String, List<UserID>>? reactions, bool? pinned, Map<String, dynamic>? metadata, MessageStatus? status, required String source, @DurationConverter() required Duration duration, String? text, int? size, List<double>? waveform})
Creates an audio message.
const
factory
Message.custom({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<String, List<UserID>>? reactions, bool? pinned, Map<String, dynamic>? metadata, MessageStatus? status})
Creates a custom message with application-specific data.
const
factory
Message.file({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<String, List<UserID>>? reactions, bool? pinned, Map<String, dynamic>? metadata, MessageStatus? status, required String source, required String name, int? size, String? mimeType})
Creates a file message.
const
factory
Message.fromJson(Map<String, dynamic> json)
Creates a Message instance from a JSON map.
factory
Message.image({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<String, List<UserID>>? reactions, bool? pinned, Map<String, dynamic>? metadata, MessageStatus? status, required String source, String? text, String? thumbhash, String? blurhash, double? width, double? height, bool? hasOverlay})
Creates an image message.
const
factory
Message.system({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<String, List<UserID>>? reactions, bool? pinned, Map<String, dynamic>? metadata, MessageStatus? status, required String text})
Creates a system message (e.g., "User joined the chat").
const
factory
Message.text({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, @EpochDateTimeConverter() DateTime? editedAt, Map<String, List<UserID>>? reactions, bool? pinned, Map<String, dynamic>? metadata, MessageStatus? status, required String text, LinkPreviewData? linkPreviewData})
Creates a text message.
const
factory
Message.textStream({required String id, required String authorId, String? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<String, List<UserID>>? reactions, bool? pinned, Map<String, dynamic>? metadata, MessageStatus? status, required String streamId})
Creates a streaming text message placeholder. Used while the text content is being streamed.
const
factory
Message.unsupported({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<String, List<UserID>>? reactions, bool? pinned, Map<String, dynamic>? metadata, MessageStatus? status})
Represents a message type that is not recognized or supported by the current version. Used as a fallback during JSON deserialization.
const
factory
Message.video({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<String, List<UserID>>? reactions, bool? pinned, Map<String, dynamic>? metadata, MessageStatus? status, required String source, String? text, String? name, int? size, double? width, double? height})
Creates a video message.
const
factory

Properties

authorId → String
ID of the user who sent the message.
no setterinherited
copyWith → $MessageCopyWith<Message>
Create a copy of Message with the given fields replaced by the non-null parameter values.
no setterinherited
createdAt → DateTime?
Timestamp when the message was created.
no setterinherited
deletedAt → DateTime?
Timestamp when the message was marked as deleted.
no setterinherited
deliveredAt → DateTime?
Timestamp when the message was delivered to the recipient.
no setterinherited
failedAt → DateTime?
Timestamp when the message failed to send.
no setterinherited
hashCode → int
The hash code for this object.
no setterinherited
id → String
Unique identifier for the message.
no setterinherited
metadata → Map<String, dynamic>?
Additional custom metadata associated with the message.
no setterinherited
pinned → bool?
Indicates if the message is pinned.
no setterinherited
reactions → Map<String, List<UserID>>?
Map of reaction keys to lists of user IDs who reacted.
no setterinherited
replyToMessageId → String?
ID of the message this one is replying to.
no setterinherited
resolvedStatus → MessageStatus?
Calculates the current status of the message based on its timestamps or status field. Returns null if the message has no specific status yet (only createdAt).
no setter
resolvedTime → DateTime?
Returns the primary time associated with the message, used for display.
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
seenAt → DateTime?
Timestamp when the message was seen by the recipient.
no setterinherited
sentAt → DateTime?
Timestamp when the message was successfully sent.
no setterinherited
status → MessageStatus?
Status of the message. Takes precedence over the timestamp based status. If not provided, the status is determined by createdAt, sentAt, seenAt etc.
no setterinherited
updatedAt → DateTime?
Timestamp when the message was last updated.
no setterinherited

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toJson() → Map<String, dynamic>
Serializes this Message to a JSON map.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited