Fix bumping unloaded rooms in room list when receiving messages

This commit is contained in:
Tulir Asokan 2019-06-15 17:51:36 +03:00
parent 160b035c4d
commit 0f08c49df4
3 changed files with 18 additions and 2 deletions

View File

@ -44,6 +44,7 @@ type MainView interface {
AddRoom(room *rooms.Room) AddRoom(room *rooms.Room)
RemoveRoom(room *rooms.Room) RemoveRoom(room *rooms.Room)
SetRooms(rooms *rooms.RoomCache) SetRooms(rooms *rooms.RoomCache)
Bump(room *rooms.Room)
UpdateTags(room *rooms.Room) UpdateTags(room *rooms.Room)

View File

@ -315,7 +315,7 @@ func (c *Container) HandleMessage(source EventSource, evt *mautrix.Event) {
debug.Printf("Failed to add event %s to history: %v", evt.ID, err) debug.Printf("Failed to add event %s to history: %v", evt.ID, err)
} }
if !c.config.AuthCache.InitialSyncDone || !room.Loaded() { if !c.config.AuthCache.InitialSyncDone {
room.LastReceivedMessage = time.Unix(evt.Timestamp/1000, evt.Timestamp%1000*1000) room.LastReceivedMessage = time.Unix(evt.Timestamp/1000, evt.Timestamp%1000*1000)
return return
} }
@ -328,6 +328,17 @@ func (c *Container) HandleMessage(source EventSource, evt *mautrix.Event) {
return return
} }
if !room.Loaded() {
pushRules := c.PushRules().GetActions(room, evt).Should()
shouldNotify := pushRules.Notify || !pushRules.NotifySpecified
if !shouldNotify {
room.LastReceivedMessage = time.Unix(evt.Timestamp/1000, evt.Timestamp%1000*1000)
room.AddUnread(evt.ID, shouldNotify, pushRules.Highlight)
mainView.Bump(room)
return
}
}
// TODO switch to roomView.AddEvent // TODO switch to roomView.AddEvent
message := roomView.ParseEvent(evt) message := roomView.ParseEvent(evt)
if message != nil { if message != nil {

View File

@ -387,8 +387,12 @@ func sendNotification(room *rooms.Room, sender, text string, critical, sound boo
notification.Send(sender, text, critical, sound) notification.Send(sender, text, critical, sound)
} }
func (view *MainView) NotifyMessage(room *rooms.Room, message ifc.Message, should pushrules.PushActionArrayShould) { func (view *MainView) Bump(room *rooms.Room) {
view.roomList.Bump(room) view.roomList.Bump(room)
}
func (view *MainView) NotifyMessage(room *rooms.Room, message ifc.Message, should pushrules.PushActionArrayShould) {
view.Bump(room)
uiMsg, ok := message.(*messages.UIMessage) uiMsg, ok := message.(*messages.UIMessage)
if ok && uiMsg.SenderID == view.config.UserID { if ok && uiMsg.SenderID == view.config.UserID {
return return