fix MessageReplyInfo unmarshaller

This commit is contained in:
ming 2021-02-24 03:49:36 +08:00
parent 513c7078e8
commit a17b150402
1 changed files with 38 additions and 0 deletions

View File

@ -6316,6 +6316,32 @@ func (messageInteractionInfo *MessageInteractionInfo) MessageType() string {
return "messageInteractionInfo"
}
// UnmarshalJSON unmarshal to json
func (messageReplyInfo *MessageReplyInfo) UnmarshalJSON(data []byte) error {
var tmp struct {
ReplyCount int32 `json:"reply_count"`
RecentRepliers []*json.RawMessage `json:"recent_repliers"`
LastReadInboxMessageId int64 `json:"last_read_inbox_message_id"`
LastReadOutboxMessageId int64 `json:"last_read_outbox_message_id"`
LastMessageId int64 `json:"last_message_id"`
}
err := json.Unmarshal(data, &tmp)
if err != nil {
return err
}
messageReplyInfo.ReplyCount = tmp.ReplyCount
messageReplyInfo.LastReadInboxMessageID = tmp.LastReadInboxMessageId
messageReplyInfo.LastReadOutboxMessageID = tmp.LastReadOutboxMessageId
messageReplyInfo.LastMessageID = tmp.LastMessageId
fieldRecentRepliers, _ := unmarshalListOfMessageSender(tmp.RecentRepliers)
messageReplyInfo.RecentRepliers = fieldRecentRepliers
return nil
}
// NewMessageInteractionInfo creates a new MessageInteractionInfo
//
// @param viewCount Number of times the message was viewed
@ -32318,6 +32344,18 @@ func unmarshalSecretChatState(rawMsg *json.RawMessage) (SecretChatState, error)
}
}
func unmarshalListOfMessageSender(rawMsgs []*json.RawMessage) ([]MessageSender, error) {
messageSenders := make([]MessageSender, len(rawMsgs))
var err error
for i, rawMsg := range rawMsgs {
messageSenders[i], err = unmarshalMessageSender(rawMsg)
if err != nil {
return nil, err
}
}
return messageSenders, nil
}
func unmarshalMessageSender(rawMsg *json.RawMessage) (MessageSender, error) {
if rawMsg == nil {