From 45f71dbaa3641edc8db6aef6d2fc7c50a91792aa Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 29 Nov 2020 02:05:11 +0200 Subject: [PATCH] Include m.room.encryption state events in timeline in sync filter --- config/config.go | 7 +++++++ matrix/sync.go | 41 ++++++++++++++++++----------------------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/config/config.go b/config/config.go index 7afe21f..9a3de04 100644 --- a/config/config.go +++ b/config/config.go @@ -36,6 +36,7 @@ import ( type AuthCache struct { NextBatch string `yaml:"next_batch"` FilterID string `yaml:"filter_id"` + FilterVersion int `yaml:"filter_version"` InitialSyncDone bool `yaml:"initial_sync_done"` } @@ -262,12 +263,18 @@ func (config *Config) GetUserID() id.UserID { return config.UserID } +const FilterVersion = 1 + func (config *Config) SaveFilterID(_ id.UserID, filterID string) { config.AuthCache.FilterID = filterID + config.AuthCache.FilterVersion = FilterVersion config.SaveAuthCache() } func (config *Config) LoadFilterID(_ id.UserID) string { + if config.AuthCache.FilterVersion != FilterVersion { + return "" + } return config.AuthCache.FilterID } diff --git a/matrix/sync.go b/matrix/sync.go index 268bf46..a3f889a 100644 --- a/matrix/sync.go +++ b/matrix/sync.go @@ -226,37 +226,32 @@ func (s *GomuksSyncer) OnFailedSync(res *mautrix.RespSync, err error) (time.Dura // GetFilterJSON returns a filter with a timeline limit of 50. func (s *GomuksSyncer) GetFilterJSON(_ id.UserID) *mautrix.Filter { + stateEvents := []event.Type{ + event.StateMember, + event.StateRoomName, + event.StateTopic, + event.StateCanonicalAlias, + event.StatePowerLevels, + event.StateTombstone, + event.StateEncryption, + } + messageEvents := []event.Type{ + event.EventMessage, + event.EventRedaction, + event.EventEncrypted, + event.EventSticker, + event.EventReaction, + } return &mautrix.Filter{ Room: mautrix.RoomFilter{ IncludeLeave: false, State: mautrix.FilterPart{ LazyLoadMembers: true, - Types: []event.Type{ - event.StateMember, - event.StateRoomName, - event.StateTopic, - event.StateCanonicalAlias, - event.StatePowerLevels, - event.StateTombstone, - event.StateEncryption, - }, + Types: stateEvents, }, Timeline: mautrix.FilterPart{ LazyLoadMembers: true, - Types: []event.Type{ - event.EventMessage, - event.EventRedaction, - event.EventEncrypted, - event.EventSticker, - event.EventReaction, - - event.StateMember, - event.StateRoomName, - event.StateTopic, - event.StateCanonicalAlias, - event.StatePowerLevels, - event.StateTombstone, - }, + Types: append(messageEvents, stateEvents...), Limit: 50, }, Ephemeral: mautrix.FilterPart{