mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-20 18:43:41 -05:00
hicli/pushrules: add support for room mentions
This commit is contained in:
parent
3dd7f9a4bd
commit
7601609683
3 changed files with 30 additions and 4 deletions
2
go.mod
2
go.mod
|
@ -20,7 +20,7 @@ require (
|
|||
golang.org/x/net v0.30.0
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
maunium.net/go/mauflag v1.0.0
|
||||
maunium.net/go/mautrix v0.21.2-0.20241017173032-367828429297
|
||||
maunium.net/go/mautrix v0.21.2-0.20241018110725-6c07832ed7b5
|
||||
mvdan.cc/xurls/v2 v2.5.0
|
||||
)
|
||||
|
||||
|
|
4
go.sum
4
go.sum
|
@ -73,7 +73,7 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M=
|
||||
maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA=
|
||||
maunium.net/go/mautrix v0.21.2-0.20241017173032-367828429297 h1:8CybV+x9HPh4p41nIqJMKHI0bUF0g0bEozq49ytNVlc=
|
||||
maunium.net/go/mautrix v0.21.2-0.20241017173032-367828429297/go.mod h1:sjCZR1R/3NET/WjkcXPL6WpAHlWKku9HjRsdOkbM8Qw=
|
||||
maunium.net/go/mautrix v0.21.2-0.20241018110725-6c07832ed7b5 h1:tbBKkNxpRabCFcekRMDTaV+z+ZZUAG5zNpOMI4zk/sQ=
|
||||
maunium.net/go/mautrix v0.21.2-0.20241018110725-6c07832ed7b5/go.mod h1:sjCZR1R/3NET/WjkcXPL6WpAHlWKku9HjRsdOkbM8Qw=
|
||||
mvdan.cc/xurls/v2 v2.5.0 h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8=
|
||||
mvdan.cc/xurls/v2 v2.5.0/go.mod h1:yQgaGQ1rFtJUzkmKiHYSSfuQxqfYmd//X6PxvholpeE=
|
||||
|
|
|
@ -8,6 +8,7 @@ package hicli
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"maunium.net/go/mautrix"
|
||||
|
@ -23,6 +24,7 @@ type pushRoom struct {
|
|||
roomID id.RoomID
|
||||
h *HiClient
|
||||
ll *mautrix.LazyLoadSummary
|
||||
pl *event.PowerLevelsEventContent
|
||||
}
|
||||
|
||||
func (p *pushRoom) GetOwnDisplayname() string {
|
||||
|
@ -58,7 +60,31 @@ func (p *pushRoom) GetEvent(id id.EventID) *event.Event {
|
|||
return evt.AsRawMautrix()
|
||||
}
|
||||
|
||||
var _ pushrules.EventfulRoom = (*pushRoom)(nil)
|
||||
func (p *pushRoom) GetPowerLevels() *event.PowerLevelsEventContent {
|
||||
if p.pl != nil {
|
||||
return p.pl
|
||||
}
|
||||
evt, err := p.h.DB.CurrentState.Get(p.ctx, p.roomID, event.StatePowerLevels, "")
|
||||
if err != nil {
|
||||
zerolog.Ctx(p.ctx).Err(err).
|
||||
Stringer("room_id", p.roomID).
|
||||
Msg("Failed to get power levels in push rule evaluator")
|
||||
return nil
|
||||
}
|
||||
err = json.Unmarshal(evt.Content, &p.pl)
|
||||
if err != nil {
|
||||
zerolog.Ctx(p.ctx).Err(err).
|
||||
Stringer("room_id", p.roomID).
|
||||
Msg("Failed to unmarshal power levels in push rule evaluator")
|
||||
return nil
|
||||
}
|
||||
return p.pl
|
||||
}
|
||||
|
||||
var (
|
||||
_ pushrules.EventfulRoom = (*pushRoom)(nil)
|
||||
_ pushrules.PowerLevelfulRoom = (*pushRoom)(nil)
|
||||
)
|
||||
|
||||
func (h *HiClient) evaluatePushRules(ctx context.Context, llSummary *mautrix.LazyLoadSummary, baseType database.UnreadType, evt *event.Event) database.UnreadType {
|
||||
should := h.PushRules.Load().GetMatchingRule(&pushRoom{
|
||||
|
|
Loading…
Add table
Reference in a new issue