diff --git a/chat.go b/chat.go index 922a52d..3002602 100644 --- a/chat.go +++ b/chat.go @@ -232,6 +232,18 @@ type ChatEvent struct { Type string `json:"type"` } +type ChatEventDataFix struct { + Channels [][]string `json:"channels"` + Messages []ChatEventMessage `json:"messages"` + Users []ChatEventUser `json:"users"` +} + +type ChatEventFix struct { + Data ChatEventDataFix `json:"data"` + RequestID string `json:"request_id"` + Type string `json:"type"` +} + func (c *Client) StartChatStream(handle func(cv ChatView), handleError func(err error)) error { c.chatStreamMu.Lock() defer c.chatStreamMu.Unlock() @@ -305,7 +317,14 @@ func parseEvent(event []byte) ([]ChatView, error) { var ce ChatEvent err := json.Unmarshal(event, &ce) if err != nil { - return nil, fmt.Errorf("error un-marshaling event: %v", err) + var cef ChatEventFix + errFix := json.Unmarshal(event, &cef) + if errFix != nil { + return nil, fmt.Errorf("error un-marshaling event: %v", err) + } + + ce.Data.Messages = cef.Data.Messages + ce.Data.Users = cef.Data.Users } users := chatUsers(ce.Data.Users)