summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gateway/bridgemap/bridgemap.go66
-rw-r--r--gateway/handlers.go9
2 files changed, 45 insertions, 30 deletions
diff --git a/gateway/bridgemap/bridgemap.go b/gateway/bridgemap/bridgemap.go
index 1ad013ed..6ce7157f 100644
--- a/gateway/bridgemap/bridgemap.go
+++ b/gateway/bridgemap/bridgemap.go
@@ -3,35 +3,41 @@ package bridgemap
import (
"github.com/42wim/matterbridge/bridge"
"github.com/42wim/matterbridge/bridge/api"
- "github.com/42wim/matterbridge/bridge/discord"
- "github.com/42wim/matterbridge/bridge/gitter"
- "github.com/42wim/matterbridge/bridge/irc"
- "github.com/42wim/matterbridge/bridge/matrix"
- "github.com/42wim/matterbridge/bridge/mattermost"
- "github.com/42wim/matterbridge/bridge/rocketchat"
- "github.com/42wim/matterbridge/bridge/slack"
- "github.com/42wim/matterbridge/bridge/sshchat"
- "github.com/42wim/matterbridge/bridge/steam"
- "github.com/42wim/matterbridge/bridge/telegram"
- "github.com/42wim/matterbridge/bridge/whatsapp"
- "github.com/42wim/matterbridge/bridge/xmpp"
- "github.com/42wim/matterbridge/bridge/zulip"
+ bdiscord "github.com/42wim/matterbridge/bridge/discord"
+ bgitter "github.com/42wim/matterbridge/bridge/gitter"
+ birc "github.com/42wim/matterbridge/bridge/irc"
+ bmatrix "github.com/42wim/matterbridge/bridge/matrix"
+ bmattermost "github.com/42wim/matterbridge/bridge/mattermost"
+ brocketchat "github.com/42wim/matterbridge/bridge/rocketchat"
+ bslack "github.com/42wim/matterbridge/bridge/slack"
+ bsshchat "github.com/42wim/matterbridge/bridge/sshchat"
+ bsteam "github.com/42wim/matterbridge/bridge/steam"
+ btelegram "github.com/42wim/matterbridge/bridge/telegram"
+ bwhatsapp "github.com/42wim/matterbridge/bridge/whatsapp"
+ bxmpp "github.com/42wim/matterbridge/bridge/xmpp"
+ bzulip "github.com/42wim/matterbridge/bridge/zulip"
)
-var FullMap = map[string]bridge.Factory{
- "api": api.New,
- "discord": bdiscord.New,
- "gitter": bgitter.New,
- "irc": birc.New,
- "mattermost": bmattermost.New,
- "matrix": bmatrix.New,
- "rocketchat": brocketchat.New,
- "slack-legacy": bslack.NewLegacy,
- "slack": bslack.New,
- "sshchat": bsshchat.New,
- "steam": bsteam.New,
- "telegram": btelegram.New,
- "whatsapp": bwhatsapp.New,
- "xmpp": bxmpp.New,
- "zulip": bzulip.New,
-}
+var (
+ FullMap = map[string]bridge.Factory{
+ "api": api.New,
+ "discord": bdiscord.New,
+ "gitter": bgitter.New,
+ "irc": birc.New,
+ "mattermost": bmattermost.New,
+ "matrix": bmatrix.New,
+ "rocketchat": brocketchat.New,
+ "slack-legacy": bslack.NewLegacy,
+ "slack": bslack.New,
+ "sshchat": bsshchat.New,
+ "steam": bsteam.New,
+ "telegram": btelegram.New,
+ "whatsapp": bwhatsapp.New,
+ "xmpp": bxmpp.New,
+ "zulip": bzulip.New,
+ }
+
+ UserTypingSupport = map[string]struct{}{
+ "slack": {},
+ }
+)
diff --git a/gateway/handlers.go b/gateway/handlers.go
index 74bf4334..26d3f189 100644
--- a/gateway/handlers.go
+++ b/gateway/handlers.go
@@ -14,6 +14,7 @@ import (
"github.com/42wim/matterbridge/bridge"
"github.com/42wim/matterbridge/bridge/config"
+ "github.com/42wim/matterbridge/gateway/bridgemap"
)
// handleEventFailure handles failures and reconnects bridges.
@@ -190,6 +191,14 @@ func (gw *Gateway) ignoreEvent(event string, dest *bridge.Bridge) bool {
func (gw *Gateway) handleMessage(rmsg *config.Message, dest *bridge.Bridge) []*BrMsgID {
var brMsgIDs []*BrMsgID
+ // Not all bridges support "user is typing" indications so skip the message
+ // if the targeted bridge does not support it.
+ if rmsg.Event == config.EventUserTyping {
+ if _, ok := bridgemap.UserTypingSupport[dest.Protocol]; !ok {
+ return nil
+ }
+ }
+
// if we have an attached file, or other info
if rmsg.Extra != nil && len(rmsg.Extra[config.EventFileFailureSize]) != 0 && rmsg.Text == "" {
return brMsgIDs