Handle same account in multiple gateways better
This commit is contained in:
		| @@ -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 { | ||||
|   | ||||
| @@ -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) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Wim
					Wim