From 7e21d59dcadd1eeb8fdee4521c77121c8ec2c699 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Thu, 20 Apr 2017 00:19:23 +0100 Subject: [PATCH] Handle leave events --- responses.go | 10 ++++++++++ sync.go | 8 ++++++++ 2 files changed, 18 insertions(+) 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 }