encode method

  1. @override
Future<MessagePayload> encode()
override

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;
}