5
0
mirror of https://github.com/cwinfo/matterbridge.git synced 2024-11-10 03:10:26 +00:00

Handle same account in multiple gateways better

This commit is contained in:
Wim 2017-07-30 16:09:05 +02:00
parent 38d09dba2e
commit 12989bbd99
2 changed files with 12 additions and 12 deletions

View File

@ -170,7 +170,8 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) {
}
func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
if gw.Router.getGatewayName(getChannelID(*msg)) != gw.Name {
// if we don't have the bridge, ignore it
if _, ok := gw.Bridges[msg.Account]; !ok {
return true
}
if msg.Text == "" {
@ -240,7 +241,7 @@ func (gw *Gateway) modifyAvatar(msg config.Message, dest *bridge.Bridge) string
func (gw *Gateway) modifyMessage(msg *config.Message) {
// replace :emoji: to unicode
msg.Text = emojilib.Replace(msg.Text)
msg.Gateway = gw.Router.getGatewayName(getChannelID(*msg))
msg.Gateway = gw.Name
}
func getChannelID(msg config.Message) string {

View File

@ -70,13 +70,14 @@ func (r *Router) getBridge(account string) *bridge.Bridge {
return nil
}
func (r *Router) getGatewayName(channelID string) string {
func (r *Router) getGatewayName(channelID string) []string {
var names []string
for _, gw := range r.Gateways {
if _, ok := gw.Channels[channelID]; ok {
return gw.Name
names = append(names, gw.Name)
}
}
return ""
return names
}
func (r *Router) handleReceive() {
@ -103,13 +104,11 @@ func (r *Router) handleReceive() {
}
}
for _, gw := range r.Gateways {
if gw.Name == r.getGatewayName(getChannelID(msg)) {
if !gw.ignoreMessage(&msg) {
msg.Timestamp = time.Now()
gw.modifyMessage(&msg)
for _, br := range gw.Bridges {
gw.handleMessage(msg, br)
}
if !gw.ignoreMessage(&msg) {
msg.Timestamp = time.Now()
gw.modifyMessage(&msg)
for _, br := range gw.Bridges {
gw.handleMessage(msg, br)
}
}
}