Message.deserialize constructor

Message.deserialize(
  1. BinaryReader reader
)

Deserialize.

Implementation

factory Message.deserialize(BinaryReader reader) {
  // Read [Message] fields.
  final flags = reader.readInt32();
  final out = (flags & 2) != 0;
  final mentioned = (flags & 16) != 0;
  final mediaUnread = (flags & 32) != 0;
  final silent = (flags & 8192) != 0;
  final post = (flags & 16384) != 0;
  final fromScheduled = (flags & 262144) != 0;
  final legacy = (flags & 524288) != 0;
  final editHide = (flags & 2097152) != 0;
  final pinned = (flags & 16777216) != 0;
  final noforwards = (flags & 67108864) != 0;
  final invertMedia = (flags & 134217728) != 0;
  final flags2 = reader.readInt32();
  final offline = (flags2 & 2) != 0;
  final videoProcessingPending = (flags2 & 16) != 0;
  final paidSuggestedPostStars = (flags2 & 256) != 0;
  final paidSuggestedPostTon = (flags2 & 512) != 0;
  final id = reader.readInt32();
  final hasFromIdField = (flags & 256) != 0;
  final fromId = hasFromIdField ? reader.readObject() as PeerBase : null;
  final hasFromBoostsAppliedField = (flags & 536870912) != 0;
  final fromBoostsApplied =
      hasFromBoostsAppliedField ? reader.readInt32() : null;
  final hasFromRankField = (flags2 & 4096) != 0;
  final fromRank = hasFromRankField ? reader.readString() : null;
  final peerId = reader.readObject() as PeerBase;
  final hasSavedPeerIdField = (flags & 268435456) != 0;
  final savedPeerId =
      hasSavedPeerIdField ? reader.readObject() as PeerBase : null;
  final hasFwdFromField = (flags & 4) != 0;
  final fwdFrom =
      hasFwdFromField ? reader.readObject() as MessageFwdHeaderBase : null;
  final hasViaBotIdField = (flags & 2048) != 0;
  final viaBotId = hasViaBotIdField ? reader.readInt64() : null;
  final hasViaBusinessBotIdField = (flags2 & 1) != 0;
  final viaBusinessBotId =
      hasViaBusinessBotIdField ? reader.readInt64() : null;
  final hasGuestchatViaFromField = (flags2 & 524288) != 0;
  final guestchatViaFrom =
      hasGuestchatViaFromField ? reader.readObject() as PeerBase : null;
  final hasReplyToField = (flags & 8) != 0;
  final replyTo =
      hasReplyToField ? reader.readObject() as MessageReplyHeaderBase : null;
  final date = reader.readDateTime();
  final message = reader.readString();
  final hasMediaField = (flags & 512) != 0;
  final media =
      hasMediaField ? reader.readObject() as MessageMediaBase : null;
  final hasReplyMarkupField = (flags & 64) != 0;
  final replyMarkup =
      hasReplyMarkupField ? reader.readObject() as ReplyMarkupBase : null;
  final hasEntitiesField = (flags & 128) != 0;
  final entities =
      hasEntitiesField ? reader.readVectorObject<MessageEntityBase>() : null;
  final hasViewsField = (flags & 1024) != 0;
  final views = hasViewsField ? reader.readInt32() : null;
  final hasForwardsField = (flags & 1024) != 0;
  final forwards = hasForwardsField ? reader.readInt32() : null;
  final hasRepliesField = (flags & 8388608) != 0;
  final replies =
      hasRepliesField ? reader.readObject() as MessageRepliesBase : null;
  final hasEditDateField = (flags & 32768) != 0;
  final editDate = hasEditDateField ? reader.readDateTime() : null;
  final hasPostAuthorField = (flags & 65536) != 0;
  final postAuthor = hasPostAuthorField ? reader.readString() : null;
  final hasGroupedIdField = (flags & 131072) != 0;
  final groupedId = hasGroupedIdField ? reader.readInt64() : null;
  final hasReactionsField = (flags & 1048576) != 0;
  final reactions =
      hasReactionsField ? reader.readObject() as MessageReactionsBase : null;
  final hasRestrictionReasonField = (flags & 4194304) != 0;
  final restrictionReason = hasRestrictionReasonField
      ? reader.readVectorObject<RestrictionReasonBase>()
      : null;
  final hasTtlPeriodField = (flags & 33554432) != 0;
  final ttlPeriod = hasTtlPeriodField ? reader.readInt32() : null;
  final hasQuickReplyShortcutIdField = (flags & 1073741824) != 0;
  final quickReplyShortcutId =
      hasQuickReplyShortcutIdField ? reader.readInt32() : null;
  final hasEffectField = (flags2 & 4) != 0;
  final effect = hasEffectField ? reader.readInt64() : null;
  final hasFactcheckField = (flags2 & 8) != 0;
  final factcheck =
      hasFactcheckField ? reader.readObject() as FactCheckBase : null;
  final hasReportDeliveryUntilDateField = (flags2 & 32) != 0;
  final reportDeliveryUntilDate =
      hasReportDeliveryUntilDateField ? reader.readDateTime() : null;
  final hasPaidMessageStarsField = (flags2 & 64) != 0;
  final paidMessageStars =
      hasPaidMessageStarsField ? reader.readInt64() : null;
  final hasSuggestedPostField = (flags2 & 128) != 0;
  final suggestedPost =
      hasSuggestedPostField ? reader.readObject() as SuggestedPostBase : null;
  final hasScheduleRepeatPeriodField = (flags2 & 1024) != 0;
  final scheduleRepeatPeriod =
      hasScheduleRepeatPeriodField ? reader.readInt32() : null;
  final hasSummaryFromLanguageField = (flags2 & 2048) != 0;
  final summaryFromLanguage =
      hasSummaryFromLanguageField ? reader.readString() : null;
  final hasRichMessageField = (flags2 & 8192) != 0;
  final richMessage =
      hasRichMessageField ? reader.readObject() as RichMessageBase : null;

  // Construct [Message] object.
  final returnValue = Message(
    out: out,
    mentioned: mentioned,
    mediaUnread: mediaUnread,
    silent: silent,
    post: post,
    fromScheduled: fromScheduled,
    legacy: legacy,
    editHide: editHide,
    pinned: pinned,
    noforwards: noforwards,
    invertMedia: invertMedia,
    offline: offline,
    videoProcessingPending: videoProcessingPending,
    paidSuggestedPostStars: paidSuggestedPostStars,
    paidSuggestedPostTon: paidSuggestedPostTon,
    id: id,
    fromId: fromId,
    fromBoostsApplied: fromBoostsApplied,
    fromRank: fromRank,
    peerId: peerId,
    savedPeerId: savedPeerId,
    fwdFrom: fwdFrom,
    viaBotId: viaBotId,
    viaBusinessBotId: viaBusinessBotId,
    guestchatViaFrom: guestchatViaFrom,
    replyTo: replyTo,
    date: date,
    message: message,
    media: media,
    replyMarkup: replyMarkup,
    entities: entities?.items,
    views: views,
    forwards: forwards,
    replies: replies,
    editDate: editDate,
    postAuthor: postAuthor,
    groupedId: groupedId,
    reactions: reactions,
    restrictionReason: restrictionReason?.items,
    ttlPeriod: ttlPeriod,
    quickReplyShortcutId: quickReplyShortcutId,
    effect: effect,
    factcheck: factcheck,
    reportDeliveryUntilDate: reportDeliveryUntilDate,
    paidMessageStars: paidMessageStars,
    suggestedPost: suggestedPost,
    scheduleRepeatPeriod: scheduleRepeatPeriod,
    summaryFromLanguage: summaryFromLanguage,
    richMessage: richMessage,
  );

  // Now return the deserialized [Message].
  return returnValue;
}