Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 703636ab2c1c5413ec1a2054edfe93920fb81286 Author: Wim <wim@42.be> Date: Sat Feb 23 23:03:21 2019 +0000 Do not send topic changes on connect (xmpp). Fixes #732 (#733) This checks if we get a topic change < 5 seconds after connection. If that's the case, ignore it. Also this PR makes the topic change an actual EventTopicChange. diff --git a/bridge/xmpp/xmpp.go b/bridge/xmpp/xmpp.go index 75fc83a..6fc573b 100644 --- a/bridge/xmpp/xmpp.go +++ b/bridge/xmpp/xmpp.go @@ -176 +177 @@ type Bxmpp struct {   xc *xmpp.Client   xmppMap map[string]string   *bridge.Config + startTime time.Time  }    func New(cfg *bridge.Config) bridge.Bridger { @@ -1536 +1547 @@ func (b *Bxmpp) xmppKeepAlive() chan bool {  func (b *Bxmpp) handleXMPP() error {   var ok bool   var msgid string + b.startTime = time.Now()   done := b.xmppKeepAlive()   defer close(done)   for { @@ -16415 +16627 @@ func (b *Bxmpp) handleXMPP() error {   case xmpp.Chat:   if v.Type == "groupchat" {   b.Log.Debugf("== Receiving %#v", v) + event := ""   // skip invalid messages   if b.skipMessage(v) {   continue   } + if strings.Contains(v.Text, "has set the subject to:") { + event = config.EventTopicChange + }   msgid = v.ID   if v.ReplaceID != "" {   msgid = v.ReplaceID   } - rmsg := config.Message{Username: b.parseNick(v.Remote), Text: v.Text, Channel: b.parseChannel(v.Remote), Account: b.Account, UserID: v.Remote, ID: msgid} + rmsg := config.Message{ + Username: b.parseNick(v.Remote), + Text: v.Text, + Channel: b.parseChannel(v.Remote), + Account: b.Account, + UserID: v.Remote, + ID: msgid, + Event: event, + }     // check if we have an action event   rmsg.Text, ok = b.replaceAction(rmsg.Text) @@ -2596 +27311 @@ func (b *Bxmpp) skipMessage(message xmpp.Chat) bool {   return true   }   + // do not show subjects on connect #732 + if strings.Contains(message.Text, "has set the subject to:") && time.Since(b.startTime) < time.Second*5 { + return true + } +   // skip delayed messages   t := time.Time{}   return message.Stamp != t