aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/session.go6
-rw-r--r--matrix/matrix.go6
-rw-r--r--matrix/sync.go18
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