mirror of
https://github.com/cwinfo/matterbridge.git
synced 2024-11-25 20:11:36 +00:00
Handle same account in multiple gateways better
This commit is contained in:
parent
38d09dba2e
commit
12989bbd99
@ -170,7 +170,8 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
|
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
|
return true
|
||||||
}
|
}
|
||||||
if msg.Text == "" {
|
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) {
|
func (gw *Gateway) modifyMessage(msg *config.Message) {
|
||||||
// replace :emoji: to unicode
|
// replace :emoji: to unicode
|
||||||
msg.Text = emojilib.Replace(msg.Text)
|
msg.Text = emojilib.Replace(msg.Text)
|
||||||
msg.Gateway = gw.Router.getGatewayName(getChannelID(*msg))
|
msg.Gateway = gw.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
func getChannelID(msg config.Message) string {
|
func getChannelID(msg config.Message) string {
|
||||||
|
@ -70,13 +70,14 @@ func (r *Router) getBridge(account string) *bridge.Bridge {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Router) getGatewayName(channelID string) string {
|
func (r *Router) getGatewayName(channelID string) []string {
|
||||||
|
var names []string
|
||||||
for _, gw := range r.Gateways {
|
for _, gw := range r.Gateways {
|
||||||
if _, ok := gw.Channels[channelID]; ok {
|
if _, ok := gw.Channels[channelID]; ok {
|
||||||
return gw.Name
|
names = append(names, gw.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ""
|
return names
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Router) handleReceive() {
|
func (r *Router) handleReceive() {
|
||||||
@ -103,13 +104,11 @@ func (r *Router) handleReceive() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, gw := range r.Gateways {
|
for _, gw := range r.Gateways {
|
||||||
if gw.Name == r.getGatewayName(getChannelID(msg)) {
|
if !gw.ignoreMessage(&msg) {
|
||||||
if !gw.ignoreMessage(&msg) {
|
msg.Timestamp = time.Now()
|
||||||
msg.Timestamp = time.Now()
|
gw.modifyMessage(&msg)
|
||||||
gw.modifyMessage(&msg)
|
for _, br := range gw.Bridges {
|
||||||
for _, br := range gw.Bridges {
|
gw.handleMessage(msg, br)
|
||||||
gw.handleMessage(msg, br)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user