summaryrefslogtreecommitdiffstats
path: root/bridge/rocketchat
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/rocketchat')
-rw-r--r--bridge/rocketchat/handlers.go25
-rw-r--r--bridge/rocketchat/rocketchat.go6
2 files changed, 30 insertions, 1 deletions
diff --git a/bridge/rocketchat/handlers.go b/bridge/rocketchat/handlers.go
index a41004d4..80adb31e 100644
--- a/bridge/rocketchat/handlers.go
+++ b/bridge/rocketchat/handlers.go
@@ -2,6 +2,7 @@ package brocketchat
import (
"github.com/42wim/matterbridge/bridge/config"
+ "github.com/matterbridge/Rocket.Chat.Go.SDK/models"
)
func (b *Brocketchat) handleRocket() {
@@ -38,6 +39,23 @@ func (b *Brocketchat) handleRocketHook(messages chan *config.Message) {
}
}
+func (b *Brocketchat) handleStatusEvent(ev models.Message, rmsg *config.Message) bool {
+ switch ev.Type {
+ case "":
+ // this is a normal message, no processing needed
+ // return true so the message is not dropped
+ return true
+ case sUserJoined, sUserLeft:
+ rmsg.Event = config.EventJoinLeave
+ return true
+ case sRoomChangedTopic:
+ rmsg.Event = config.EventTopicChange
+ return true
+ }
+ b.Log.Debugf("Dropping message with unknown type: %s", ev.Type)
+ return false
+}
+
func (b *Brocketchat) handleRocketClient(messages chan *config.Message) {
for message := range b.messageChan {
// skip messages with same ID, apparently messages get duplicated for an unknown reason
@@ -59,7 +77,12 @@ func (b *Brocketchat) handleRocketClient(messages chan *config.Message) {
UserID: message.User.ID,
ID: message.ID,
}
- messages <- rmsg
+
+ // handleStatusEvent returns false if the message should be dropped
+ // in that case it is probably some modification to the channel we do not want to relay
+ if b.handleStatusEvent(m, rmsg) {
+ messages <- rmsg
+ }
}
}
diff --git a/bridge/rocketchat/rocketchat.go b/bridge/rocketchat/rocketchat.go
index 59f0e99c..405beadc 100644
--- a/bridge/rocketchat/rocketchat.go
+++ b/bridge/rocketchat/rocketchat.go
@@ -29,6 +29,12 @@ type Brocketchat struct {
sync.RWMutex
}
+const (
+ sUserJoined = "uj"
+ sUserLeft = "ul"
+ sRoomChangedTopic = "room_changed_topic"
+)
+
func New(cfg *bridge.Config) bridge.Bridger {
newCache, err := lru.New(100)
if err != nil {