getOffchainMessageV0Encoder function
Returns a variable-size encoder for OffchainMessageV0.
Implementation
Encoder<OffchainMessageV0> getOffchainMessageV0Encoder() {
return transformEncoder<List<Object?>, OffchainMessageV0>(
getTupleEncoder([
getOffchainMessageV0PreambleEncoder() as Encoder<Object?>,
getUtf8Encoder() as Encoder<Object?>,
]),
(offchainMessage) {
// Validate content.
switch (offchainMessage.content.format) {
case OffchainMessageContentFormat.restrictedAscii1232BytesMax:
assertIsOffchainMessageContentRestrictedAsciiOf1232BytesMax(
offchainMessage.content,
);
case OffchainMessageContentFormat.utf81232BytesMax:
assertIsOffchainMessageContentUtf8Of1232BytesMax(
offchainMessage.content,
);
case OffchainMessageContentFormat.utf865535BytesMax:
assertIsOffchainMessageContentUtf8Of65535BytesMax(
offchainMessage.content,
);
}
final messageLength = utf8.encode(offchainMessage.content.text).length;
final preamble = <String, Object?>{
'version': offchainMessage.version,
'applicationDomain': offchainMessage.applicationDomain,
'messageFormat': offchainMessage.content.format,
'requiredSignatories': offchainMessage.requiredSignatories,
'messageLength': messageLength,
};
return [preamble, offchainMessage.content.text];
},
);
}