diff --git a/responses.go b/responses.go index de7a8ae..1ae27e3 100644 --- a/responses.go +++ b/responses.go @@ -125,6 +125,16 @@ type RespSync struct { Events []Event `json:"events"` } `json:"presence"` Rooms struct { + Leave map[string]struct { + State struct { + Events []Event `json:"events"` + } `json:"state"` + Timeline struct { + Events []Event `json:"events"` + Limited bool `json:"limited"` + PrevBatch string `json:"prev_batch"` + } `json:"timeline"` + } `json:"leave"` Join map[string]struct { State struct { Events []Event `json:"events"` diff --git a/sync.go b/sync.go index 347e5dc..f0b07e2 100644 --- a/sync.go +++ b/sync.go @@ -73,6 +73,14 @@ func (s *DefaultSyncer) ProcessResponse(res *RespSync, since string) (err error) s.notifyListeners(&event) } } + for roomID, roomData := range res.Rooms.Leave { + room := s.getOrCreateRoom(roomID) + for _, event := range roomData.Timeline.Events { + event.RoomID = roomID + room.UpdateState(&event) + s.notifyListeners(&event) + } + } return }