|
@@ -777,6 +777,10 @@ func (user *User) HandleEvent(event interface{}) {
|
|
case *events.KeepAliveRestored:
|
|
case *events.KeepAliveRestored:
|
|
user.log.Infof("Keepalive restored after timeouts, sending connected event")
|
|
user.log.Infof("Keepalive restored after timeouts, sending connected event")
|
|
go user.sendBridgeState(BridgeState{StateEvent: StateConnected})
|
|
go user.sendBridgeState(BridgeState{StateEvent: StateConnected})
|
|
|
|
+ case *events.MarkChatAsRead:
|
|
|
|
+ if user.bridge.Config.Bridge.SyncManualMarkedUnread {
|
|
|
|
+ user.markUnread(user.GetPortalByJID(v.JID), !v.Action.GetRead())
|
|
|
|
+ }
|
|
default:
|
|
default:
|
|
user.log.Debugfln("Unknown type of event in HandleEvent: %T", v)
|
|
user.log.Debugfln("Unknown type of event in HandleEvent: %T", v)
|
|
}
|
|
}
|
|
@@ -1096,6 +1100,29 @@ func (user *User) markSelfReadFull(portal *Portal) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func (user *User) markUnread(portal *Portal, unread bool) {
|
|
|
|
+ puppet := user.bridge.GetPuppetByCustomMXID(user.MXID)
|
|
|
|
+ if puppet == nil || puppet.CustomIntent() == nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ err := puppet.CustomIntent().SetRoomAccountData(portal.MXID, "m.marked_unread",
|
|
|
|
+ map[string]bool{"unread": unread})
|
|
|
|
+ if err != nil {
|
|
|
|
+ user.log.Warnfln("Failed to mark %s as unread via m.marked_unread: %v", portal.MXID, err)
|
|
|
|
+ } else {
|
|
|
|
+ user.log.Debugfln("Marked %s as unread via m.marked_unread: %v", portal.MXID, err)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ err = puppet.CustomIntent().SetRoomAccountData(portal.MXID, "com.famedly.marked_unread",
|
|
|
|
+ map[string]bool{"unread": unread})
|
|
|
|
+ if err != nil {
|
|
|
|
+ user.log.Warnfln("Failed to mark %s as unread via com.famedly.marked_unread: %v", portal.MXID, err)
|
|
|
|
+ } else {
|
|
|
|
+ user.log.Debugfln("Marked %s as unread via com.famedly.marked_unread: %v", portal.MXID, err)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
func (user *User) handleGroupCreate(evt *events.JoinedGroup) {
|
|
func (user *User) handleGroupCreate(evt *events.JoinedGroup) {
|
|
portal := user.GetPortalByJID(evt.JID)
|
|
portal := user.GetPortalByJID(evt.JID)
|
|
if len(portal.MXID) == 0 {
|
|
if len(portal.MXID) == 0 {
|