forked from MirrorHub/mautrix-whatsapp
historysync: only save when backfill is enabled
This commit is contained in:
parent
c664e5f107
commit
78c6d57299
2 changed files with 30 additions and 24 deletions
|
@ -43,30 +43,32 @@ type wrappedInfo struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user *User) handleHistorySyncsLoop() {
|
func (user *User) handleHistorySyncsLoop() {
|
||||||
reCheckQueue := make(chan bool, 1)
|
if !user.bridge.Config.Bridge.HistorySync.Backfill {
|
||||||
if user.bridge.Config.Bridge.HistorySync.Backfill {
|
return
|
||||||
// Start the backfill queue.
|
|
||||||
user.BackfillQueue = &BackfillQueue{
|
|
||||||
BackfillQuery: user.bridge.DB.BackfillQuery,
|
|
||||||
ImmediateBackfillRequests: make(chan *database.Backfill, 1),
|
|
||||||
DeferredBackfillRequests: make(chan *database.Backfill, 1),
|
|
||||||
ReCheckQueue: make(chan bool, 1),
|
|
||||||
log: user.log.Sub("BackfillQueue"),
|
|
||||||
}
|
|
||||||
reCheckQueue = user.BackfillQueue.ReCheckQueue
|
|
||||||
|
|
||||||
// Immediate backfills can be done in parallel
|
|
||||||
for i := 0; i < user.bridge.Config.Bridge.HistorySync.Immediate.WorkerCount; i++ {
|
|
||||||
go user.handleBackfillRequestsLoop(user.BackfillQueue.ImmediateBackfillRequests)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deferred backfills should be handled synchronously so as not to
|
|
||||||
// overload the homeserver. Users can configure their backfill stages
|
|
||||||
// to be more or less aggressive with backfilling at this stage.
|
|
||||||
go user.handleBackfillRequestsLoop(user.BackfillQueue.DeferredBackfillRequests)
|
|
||||||
go user.BackfillQueue.RunLoops(user)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reCheckQueue := make(chan bool, 1)
|
||||||
|
// Start the backfill queue.
|
||||||
|
user.BackfillQueue = &BackfillQueue{
|
||||||
|
BackfillQuery: user.bridge.DB.BackfillQuery,
|
||||||
|
ImmediateBackfillRequests: make(chan *database.Backfill, 1),
|
||||||
|
DeferredBackfillRequests: make(chan *database.Backfill, 1),
|
||||||
|
ReCheckQueue: make(chan bool, 1),
|
||||||
|
log: user.log.Sub("BackfillQueue"),
|
||||||
|
}
|
||||||
|
reCheckQueue = user.BackfillQueue.ReCheckQueue
|
||||||
|
|
||||||
|
// Immediate backfills can be done in parallel
|
||||||
|
for i := 0; i < user.bridge.Config.Bridge.HistorySync.Immediate.WorkerCount; i++ {
|
||||||
|
go user.handleBackfillRequestsLoop(user.BackfillQueue.ImmediateBackfillRequests)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deferred backfills should be handled synchronously so as not to
|
||||||
|
// overload the homeserver. Users can configure their backfill stages
|
||||||
|
// to be more or less aggressive with backfilling at this stage.
|
||||||
|
go user.handleBackfillRequestsLoop(user.BackfillQueue.DeferredBackfillRequests)
|
||||||
|
go user.BackfillQueue.RunLoops(user)
|
||||||
|
|
||||||
// Always save the history syncs for the user. If they want to enable
|
// Always save the history syncs for the user. If they want to enable
|
||||||
// backfilling in the future, we will have it in the database.
|
// backfilling in the future, we will have it in the database.
|
||||||
for evt := range user.historySyncs {
|
for evt := range user.historySyncs {
|
||||||
|
|
8
user.go
8
user.go
|
@ -188,7 +188,9 @@ func (bridge *Bridge) NewUser(dbUser *database.User) *User {
|
||||||
user.RelayWhitelisted = user.bridge.Config.Bridge.Permissions.IsRelayWhitelisted(user.MXID)
|
user.RelayWhitelisted = user.bridge.Config.Bridge.Permissions.IsRelayWhitelisted(user.MXID)
|
||||||
user.Whitelisted = user.bridge.Config.Bridge.Permissions.IsWhitelisted(user.MXID)
|
user.Whitelisted = user.bridge.Config.Bridge.Permissions.IsWhitelisted(user.MXID)
|
||||||
user.Admin = user.bridge.Config.Bridge.Permissions.IsAdmin(user.MXID)
|
user.Admin = user.bridge.Config.Bridge.Permissions.IsAdmin(user.MXID)
|
||||||
go user.handleHistorySyncsLoop()
|
if user.bridge.Config.Bridge.HistorySync.Backfill {
|
||||||
|
go user.handleHistorySyncsLoop()
|
||||||
|
}
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -692,7 +694,9 @@ func (user *User) HandleEvent(event interface{}) {
|
||||||
portal := user.GetPortalByMessageSource(v.Info.MessageSource)
|
portal := user.GetPortalByMessageSource(v.Info.MessageSource)
|
||||||
portal.messages <- PortalMessage{undecryptable: v, source: user}
|
portal.messages <- PortalMessage{undecryptable: v, source: user}
|
||||||
case *events.HistorySync:
|
case *events.HistorySync:
|
||||||
user.historySyncs <- v
|
if user.bridge.Config.Bridge.HistorySync.Backfill {
|
||||||
|
user.historySyncs <- v
|
||||||
|
}
|
||||||
case *events.Mute:
|
case *events.Mute:
|
||||||
portal := user.GetPortalByJID(v.JID)
|
portal := user.GetPortalByJID(v.JID)
|
||||||
if portal != nil {
|
if portal != nil {
|
||||||
|
|
Loading…
Reference in a new issue