Make edits/delete work for bridges that gets reused. Closes #342

This commit is contained in:
Wim 2018-01-20 21:58:59 +01:00
parent 7119e378a7
commit a4d5c94d9b

View File

@ -29,8 +29,9 @@ type Gateway struct {
}
type BrMsgID struct {
br *bridge.Bridge
ID string
br *bridge.Bridge
ID string
ChannelID string
}
func New(cfg config.Gateway, r *Router) *Gateway {
@ -190,7 +191,9 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) []*BrM
if res, ok := gw.Messages.Get(origmsg.ID); ok {
IDs := res.([]*BrMsgID)
for _, id := range IDs {
if dest.Protocol == id.br.Protocol {
// check protocol, bridge name and channelname
// for people that reuse the same bridge multiple times. see #342
if dest.Protocol == id.br.Protocol && dest.Name == id.br.Name && channel.ID == id.ChannelID {
msg.ID = id.ID
}
}
@ -205,7 +208,7 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) []*BrM
}
// append the message ID (mID) from this bridge (dest) to our brMsgIDs slice
if mID != "" {
brMsgIDs = append(brMsgIDs, &BrMsgID{dest, mID})
brMsgIDs = append(brMsgIDs, &BrMsgID{dest, mID, channel.ID})
}
}
return brMsgIDs