encode method
Implementation
@override
Future<MessagePayload> encode() async {
MessagePayload payload = await super.encode();
payload.content = title;
List<Map> ms = [];
for (int i = 0; i < messages.length; ++i) {
Message msg = messages.elementAt(i);
Map map = {};
if ((msg.messageUid ?? 0) > 0) {
map['uid'] = msg.messageUid;
}
map['type'] = msg.conversation?.conversationType.index;
map['target'] = msg.conversation?.target;
map['line'] = msg.conversation?.line;
map['from'] = msg.fromUser;
if (msg.toUsers != null && msg.toUsers!.isNotEmpty) {
map['tos'] = msg.toUsers;
}
map['direction'] = msg.direction?.index;
map['status'] = msg.status?.index;
map['serverTime'] = msg.serverTime;
MessagePayload? payload = await msg.content?.encode();
map['ctype'] = payload?.contentType;
map['csc'] = payload?.searchableContent;
map['cpc'] = payload?.pushContent;
map['cpd'] = payload?.pushData;
map['cc'] = payload?.content;
if (payload?.binaryContent != null) {
map['cbc'] =
const Base64Encoder().convert(payload?.binaryContent ?? []);
}
map['cmt'] = payload?.mentionedType;
if (payload?.mentionedTargets != null &&
payload!.mentionedTargets.isNotEmpty) {
map['cmts'] = payload.mentionedTargets;
}
map['ce'] = payload?.extra;
map['mt'] = payload?.mediaType.index;
if (payload?.remoteMediaUrl != null) {
map['mru'] = payload!.remoteMediaUrl;
}
ms.add(map);
}
payload.binaryContent = utf8.encode(json.encode({'ms': ms})) as Uint8List?;
return payload;
}