DecodedMessage class

This represents a fully decoded message. It attempts to give uniform shape to v1 and v2 messages.

Offline Storage

Beyond ordinary offline storage concerns (secure the database, etc), here are some tips for storing and indexing messages.

The id is a good message identifier for local storage purposes. -> Tip: consider id as your primary key in the local database

But often you won't have an id, instead you'll have a conversation and want to list the messages sequentially. To support this you'll want to key by the topic and sentAt together. -> Tip: consider topic+sentAt as an index in the local database.

Storing the decoded content is difficult because it can be any type. Instead you'll want to store the encoded content because it can be reliably serialized. Later, you can decode it using Client.decodeContent. -> Tip: store the encoded content using encoded.writeToBuffer()

See the example app for a demonstration of the overall approach.

Constructors

DecodedMessage(Message_Version version, DateTime sentAt, EthereumAddress sender, EncodedContent encoded, ContentTypeId contentType, Object content, {required String id, required String topic})

Properties

content Object
This contains the content decoded by all registered codecs. e.g. for contentTypeText, the content will be a String
final
contentType ContentTypeId
This identifies the content's type.
final
encoded EncodedContent
This contains the raw encoded content.
final
hashCode int
The hash code for this object.
no setterinherited
id String
A unique identifier for this message. Tip: this is a good identifier for local caching purposes.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
sender → EthereumAddress
Who sent the message.
final
sentAt DateTime
When the sender sent this message.
final
topic String
The topic identifier for the parent conversation.
final
version Message_Version
This identifies which type of message this contains. For the most part, you are safe to ignore this. This SDK takes pains to help you ignore the distinctions.
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
override

Operators

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