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(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<String>>? 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<String>>?
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