Don't encrypt outgoing reactions

This commit is contained in:
Tulir Asokan 2020-05-05 19:16:25 +03:00
parent 22681875f3
commit 9d4fffb259
3 changed files with 18 additions and 9 deletions

2
go.mod
View File

@ -21,7 +21,7 @@ require (
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e
gopkg.in/toast.v1 v1.0.0-20180812000517-0a84660828b2 gopkg.in/toast.v1 v1.0.0-20180812000517-0a84660828b2
gopkg.in/yaml.v2 v2.2.8 gopkg.in/yaml.v2 v2.2.8
maunium.net/go/mautrix v0.2.0-beta.4.0.20200505153708-a120e7a70f5a maunium.net/go/mautrix v0.2.0-beta.4.0.20200505161530-e9e56523da93
maunium.net/go/mauview v0.1.0 maunium.net/go/mauview v0.1.0
maunium.net/go/tcell v0.1.0 maunium.net/go/tcell v0.1.0
) )

2
go.sum
View File

@ -94,6 +94,8 @@ maunium.net/go/mautrix v0.2.0-beta.4.0.20200429002157-8c3bc8eb8f22 h1:hN7gAmWJqI
maunium.net/go/mautrix v0.2.0-beta.4.0.20200429002157-8c3bc8eb8f22/go.mod h1:SkGZzch8CvU2qKtNpYxtzZ0sQxfVEJ3IsVVLSUBUx9Y= maunium.net/go/mautrix v0.2.0-beta.4.0.20200429002157-8c3bc8eb8f22/go.mod h1:SkGZzch8CvU2qKtNpYxtzZ0sQxfVEJ3IsVVLSUBUx9Y=
maunium.net/go/mautrix v0.2.0-beta.4.0.20200505153708-a120e7a70f5a h1:5cXujK/NGwGDdllVebkfTfUq/yjfF+lc56Wjjikwl50= maunium.net/go/mautrix v0.2.0-beta.4.0.20200505153708-a120e7a70f5a h1:5cXujK/NGwGDdllVebkfTfUq/yjfF+lc56Wjjikwl50=
maunium.net/go/mautrix v0.2.0-beta.4.0.20200505153708-a120e7a70f5a/go.mod h1:SkGZzch8CvU2qKtNpYxtzZ0sQxfVEJ3IsVVLSUBUx9Y= maunium.net/go/mautrix v0.2.0-beta.4.0.20200505153708-a120e7a70f5a/go.mod h1:SkGZzch8CvU2qKtNpYxtzZ0sQxfVEJ3IsVVLSUBUx9Y=
maunium.net/go/mautrix v0.2.0-beta.4.0.20200505161530-e9e56523da93 h1:kaf3m/X4QckuNZZjfUdFpaW4E+FnsqsO7UpKT9Rn+kA=
maunium.net/go/mautrix v0.2.0-beta.4.0.20200505161530-e9e56523da93/go.mod h1:SkGZzch8CvU2qKtNpYxtzZ0sQxfVEJ3IsVVLSUBUx9Y=
maunium.net/go/mauview v0.1.0 h1:x2WdkKI2zdriJuPAB0CKlwmnHGE7W9xfM5z6RgG+IIg= maunium.net/go/mauview v0.1.0 h1:x2WdkKI2zdriJuPAB0CKlwmnHGE7W9xfM5z6RgG+IIg=
maunium.net/go/mauview v0.1.0/go.mod h1:og9WbzmWe9SNYNyOFlCv8qa9zMcOvG2nzRJ5vYyud9U= maunium.net/go/mauview v0.1.0/go.mod h1:og9WbzmWe9SNYNyOFlCv8qa9zMcOvG2nzRJ5vYyud9U=
maunium.net/go/tcell v0.1.0 h1:XzsEoGCvOw5nac+tlkSLzQcliLYTN4PrtA7ar2ptjSM= maunium.net/go/tcell v0.1.0 h1:XzsEoGCvOw5nac+tlkSLzQcliLYTN4PrtA7ar2ptjSM=

View File

@ -569,6 +569,10 @@ func (c *Container) HandleEncrypted(source EventSource, mxEvent *event.Event) {
c.HandleMessage(source, evt) c.HandleMessage(source, evt)
} }
type Relatable interface {
GetRelatesTo() *event.RelatesTo
}
// HandleMessage is the event handler for the m.room.message timeline event. // HandleMessage is the event handler for the m.room.message timeline event.
func (c *Container) HandleMessage(source EventSource, mxEvent *event.Event) { func (c *Container) HandleMessage(source EventSource, mxEvent *event.Event) {
room := c.GetOrCreateRoom(mxEvent.RoomID) room := c.GetOrCreateRoom(mxEvent.RoomID)
@ -579,13 +583,16 @@ func (c *Container) HandleMessage(source EventSource, mxEvent *event.Event) {
return return
} }
rel := mxEvent.Content.AsMessage().GetRelatesTo() relatable, ok := mxEvent.Content.Parsed.(Relatable)
if editID := rel.GetReplaceID(); len(editID) > 0 { if ok {
c.HandleEdit(room, editID, muksevt.Wrap(mxEvent)) rel := relatable.GetRelatesTo()
return if editID := rel.GetReplaceID(); len(editID) > 0 {
} else if reactionID := rel.GetAnnotationID(); mxEvent.Type == event.EventReaction && len(reactionID) > 0 { c.HandleEdit(room, editID, muksevt.Wrap(mxEvent))
c.HandleReaction(room, reactionID, muksevt.Wrap(mxEvent)) return
return } else if reactionID := rel.GetAnnotationID(); mxEvent.Type == event.EventReaction && len(reactionID) > 0 {
c.HandleReaction(room, reactionID, muksevt.Wrap(mxEvent))
return
}
} }
events, err := c.history.Append(room, []*event.Event{mxEvent}) events, err := c.history.Append(room, []*event.Event{mxEvent})
@ -880,7 +887,7 @@ func (c *Container) SendEvent(evt *muksevt.Event) (id.EventID, error) {
_, _ = c.client.UserTyping(evt.RoomID, false, 0) _, _ = c.client.UserTyping(evt.RoomID, false, 0)
c.typing = 0 c.typing = 0
room := c.GetRoom(evt.RoomID) room := c.GetRoom(evt.RoomID)
if room != nil && room.Encrypted { if room != nil && room.Encrypted && evt.Type != event.EventReaction {
encrypted, err := c.crypto.EncryptMegolmEvent(evt.RoomID, evt.Type, evt.Content) encrypted, err := c.crypto.EncryptMegolmEvent(evt.RoomID, evt.Type, evt.Content)
if err != nil { if err != nil {
if err != crypto.SessionExpired && err != crypto.SessionNotShared && err != crypto.NoGroupSession { if err != crypto.SessionExpired && err != crypto.SessionNotShared && err != crypto.NoGroupSession {