diff options
-rw-r--r-- | config/session.go | 6 | ||||
-rw-r--r-- | matrix/matrix.go | 6 | ||||
-rw-r--r-- | matrix/sync.go | 18 |
3 files changed, 17 insertions, 13 deletions
diff --git a/config/session.go b/config/session.go index 9419038..2a6ce36 100644 --- a/config/session.go +++ b/config/session.go @@ -35,6 +35,8 @@ type Session struct { FilterID string Rooms map[string]*rooms.Room PushRules *pushrules.PushRuleset + + InitialSyncDone bool } func (config *Config) LoadSession(mxid string) error { @@ -50,6 +52,10 @@ func (config *Config) NewSession(mxid string) *Session { } } +func (s *Session) SetInitialSyncDone() { + s.InitialSyncDone = true +} + func (s *Session) GetUserID() string { return s.UserID } diff --git a/matrix/matrix.go b/matrix/matrix.go index d58ce20..5345c40 100644 --- a/matrix/matrix.go +++ b/matrix/matrix.go @@ -191,7 +191,7 @@ func (c *Container) OnLogin() { c.syncer.OnEventType("m.tag", c.HandleTag) c.client.Syncer = c.syncer - c.UpdateRoomList() + //c.UpdateRoomList() } // Start moves the UI to the main view, calls OnLogin() and runs the syncer forever until stopped with Stop() @@ -296,6 +296,10 @@ func (c *Container) HandleMembership(evt *gomatrix.Event) { c.processOwnMembershipChange(evt) } + if !c.config.Session.InitialSyncDone && evt.Timestamp < time.Now().Add(-1*time.Hour).Unix() { + return + } + mainView := c.ui.MainView() roomView := mainView.GetRoom(evt.RoomID) if roomView == nil { diff --git a/matrix/sync.go b/matrix/sync.go index f3966cb..ec1c34e 100644 --- a/matrix/sync.go +++ b/matrix/sync.go @@ -20,16 +20,16 @@ package matrix import ( "encoding/json" - "fmt" - "runtime/debug" "time" "maunium.net/go/gomatrix" + "maunium.net/go/gomuks/debug" "maunium.net/go/gomuks/matrix/rooms" ) type SyncerSession interface { GetRoom(id string) *rooms.Room + SetInitialSyncDone() GetUserID() string } @@ -53,16 +53,7 @@ func NewGomuksSyncer(session SyncerSession) *GomuksSyncer { // ProcessResponse processes a Matrix sync response. func (s *GomuksSyncer) ProcessResponse(res *gomatrix.RespSync, since string) (err error) { - if len(since) == 0 { - return - } - // debug.Print("Processing sync response", since, res) - - defer func() { - if r := recover(); r != nil { - err = fmt.Errorf("ProcessResponse for %s since %s panicked: %s\n%s", s.Session.GetUserID(), since, r, debug.Stack()) - } - }() + debug.Print("Processing sync response", since, res) s.processSyncEvents(nil, res.Presence.Events, false, false) s.processSyncEvents(nil, res.AccountData.Events, false, false) @@ -93,6 +84,9 @@ func (s *GomuksSyncer) ProcessResponse(res *gomatrix.RespSync, since string) (er } } + if since == "" { + s.Session.SetInitialSyncDone() + } s.FirstSyncDone = true return |