Add config option for max age of chats to sync

This commit is contained in:
Tulir Asokan 2019-05-23 20:25:46 +03:00
parent 239de25bf0
commit 0408db5c07
3 changed files with 15 additions and 4 deletions

View file

@ -41,6 +41,7 @@ type BridgeConfig struct {
InitialHistoryFill int `yaml:"initial_history_fill_count"`
RecoverChatSync int `yaml:"recovery_chat_sync_count"`
RecoverHistory bool `yaml:"recovery_history_backfill"`
SyncChatMaxAge uint64 `yaml:"sync_max_chat_age"`
CommandPrefix string `yaml:"command_prefix"`
@ -59,6 +60,7 @@ func (bc *BridgeConfig) setDefaults() {
bc.InitialHistoryFill = 20
bc.RecoverChatSync = -1
bc.RecoverHistory = true
bc.SyncChatMaxAge = 259200
}
type umBridgeConfig BridgeConfig

View file

@ -75,6 +75,11 @@ bridge:
recovery_chat_sync_limit: -1
# Whether or not to sync history when recovering from downtime.
recovery_history_backfill: true
# Maximum number of seconds since last message in chat to skip
# syncing the chat in any case. This setting will take priority
# over both recovery_chat_sync_limit and initial_chat_sync_count.
# Default is 3 days = 259200 seconds
sync_max_chat_age: 259200
# The prefix for commands. Only required in non-management rooms.
command_prefix: "!wa"

View file

@ -312,7 +312,11 @@ func (user *User) syncPortals() {
if limit < 0 {
limit = len(chats)
}
now := uint64(time.Now().Unix())
for i, chat := range chats {
if chat.LastMessageTime + user.bridge.Config.Bridge.SyncChatMaxAge < now {
break
}
create := (chat.LastMessageTime >= user.LastConnection && user.LastConnection > 0) || i < limit
if len(chat.Portal.MXID) > 0 || create {
chat.Portal.Sync(user, chat.Contact)