aboutsummaryrefslogtreecommitdiff
path: root/matrix/matrix.go
diff options
context:
space:
mode:
Diffstat (limited to 'matrix/matrix.go')
-rw-r--r--matrix/matrix.go26
1 files changed, 24 insertions, 2 deletions
diff --git a/matrix/matrix.go b/matrix/matrix.go
index 556d567..7dbbbe1 100644
--- a/matrix/matrix.go
+++ b/matrix/matrix.go
@@ -24,7 +24,8 @@ import (
"maunium.net/go/gomatrix"
"maunium.net/go/gomuks/config"
"maunium.net/go/gomuks/interface"
- rooms "maunium.net/go/gomuks/matrix/room"
+ "maunium.net/go/gomuks/matrix/ext"
+ "maunium.net/go/gomuks/matrix/room"
"maunium.net/go/gomuks/notification"
"maunium.net/go/gomuks/ui/debug"
"maunium.net/go/gomuks/ui/types"
@@ -120,13 +121,20 @@ func (c *Container) Client() *gomatrix.Client {
}
func (c *Container) UpdatePushRules() {
- resp, err := c.client.PushRules()
+ resp, err := gomx_ext.GetPushRules(c.client)
if err != nil {
debug.Print("Failed to fetch push rules:", err)
}
c.config.Session.PushRules = resp
}
+func (c *Container) PushRules() *gomx_ext.PushRuleset {
+ if c.config.Session.PushRules == nil {
+ c.UpdatePushRules()
+ }
+ return c.config.Session.PushRules
+}
+
func (c *Container) UpdateRoomList() {
resp, err := c.client.JoinedRooms()
if err != nil {
@@ -200,6 +208,20 @@ func (c *Container) NotifyMessage(room *rooms.Room, message *types.Message) {
func (c *Container) HandleMessage(evt *gomatrix.Event) {
room, message := c.ui.MainView().ProcessMessageEvent(evt)
if room != nil {
+ match := c.PushRules().GetActions(room.Room, evt)
+
+ var buf strings.Builder
+ buf.WriteRune('[')
+ for i, rule := range match {
+ fmt.Fprintf(&buf, "{%s, %s, %s}", rule.Action, rule.Tweak, rule.Value)
+ if i < len(match)-1 {
+ buf.WriteRune(',')
+ buf.WriteRune(' ')
+ }
+ }
+ buf.WriteRune(']')
+ debug.Print(buf.String())
+
c.NotifyMessage(room.Room, message)
room.AddMessage(message, widget.AppendMessage)
c.ui.Render()