diff --git a/bridge/whatsappmulti/handlers.go b/bridge/whatsappmulti/handlers.go index c6b96a5e..4f38a032 100644 --- a/bridge/whatsappmulti/handlers.go +++ b/bridge/whatsappmulti/handlers.go @@ -62,6 +62,7 @@ func (b *Bwhatsapp) handleTextMessage(messageInfo types.MessageInfo, msg *proto. } var text string + var parent string // nolint:nestif if msg.GetExtendedTextMessage() == nil { @@ -89,6 +90,10 @@ func (b *Bwhatsapp) handleTextMessage(messageInfo types.MessageInfo, msg *proto. text = strings.Replace(text, "@"+numberAndSuffix[0], "@"+mention, 1) } } + + if ci.StanzaId != nil { + parent = *ci.StanzaId + } } rmsg := config.Message{ @@ -99,8 +104,8 @@ func (b *Bwhatsapp) handleTextMessage(messageInfo types.MessageInfo, msg *proto. Account: b.Account, Protocol: b.Protocol, Extra: make(map[string][]interface{}), - // ParentID: TODO, // TODO handle thread replies // map from Info.QuotedMessageID string - ID: messageInfo.ID, + ParentID: parent, + ID: messageInfo.ID, } if avatarURL, exists := b.userAvatars[senderJID.String()]; exists { @@ -125,6 +130,11 @@ func (b *Bwhatsapp) handleImageMessage(msg *events.Message) { senderJID = types.NewJID(ci.GetParticipant(), types.DefaultUserServer) } + var parent string + if ci.StanzaId != nil { + parent = *ci.StanzaId + } + rmsg := config.Message{ UserID: senderJID.String(), Username: senderName, @@ -133,6 +143,7 @@ func (b *Bwhatsapp) handleImageMessage(msg *events.Message) { Protocol: b.Protocol, Extra: make(map[string][]interface{}), ID: msg.Info.ID, + ParentID: parent, } if avatarURL, exists := b.userAvatars[senderJID.String()]; exists { @@ -188,6 +199,11 @@ func (b *Bwhatsapp) handleVideoMessage(msg *events.Message) { senderJID = types.NewJID(ci.GetParticipant(), types.DefaultUserServer) } + var parent string + if ci.StanzaId != nil { + parent = *ci.StanzaId + } + rmsg := config.Message{ UserID: senderJID.String(), Username: senderName, @@ -196,6 +212,7 @@ func (b *Bwhatsapp) handleVideoMessage(msg *events.Message) { Protocol: b.Protocol, Extra: make(map[string][]interface{}), ID: msg.Info.ID, + ParentID: parent, } if avatarURL, exists := b.userAvatars[senderJID.String()]; exists { @@ -244,6 +261,11 @@ func (b *Bwhatsapp) handleAudioMessage(msg *events.Message) { if senderJID == (types.JID{}) && ci.Participant != nil { senderJID = types.NewJID(ci.GetParticipant(), types.DefaultUserServer) } + + var parent string + if ci.StanzaId != nil { + parent = *ci.StanzaId + } rmsg := config.Message{ UserID: senderJID.String(), @@ -253,6 +275,7 @@ func (b *Bwhatsapp) handleAudioMessage(msg *events.Message) { Protocol: b.Protocol, Extra: make(map[string][]interface{}), ID: msg.Info.ID, + ParentID: parent, } if avatarURL, exists := b.userAvatars[senderJID.String()]; exists { @@ -276,7 +299,7 @@ func (b *Bwhatsapp) handleAudioMessage(msg *events.Message) { data, err := b.wc.Download(imsg) if err != nil { - b.Log.Errorf("Download video failed: %s", err) + b.Log.Errorf("Download audio failed: %s", err) return } @@ -302,6 +325,11 @@ func (b *Bwhatsapp) handleDocumentMessage(msg *events.Message) { senderJID = types.NewJID(ci.GetParticipant(), types.DefaultUserServer) } + var parent string + if ci.StanzaId != nil { + parent = *ci.StanzaId + } + rmsg := config.Message{ UserID: senderJID.String(), Username: senderName, @@ -310,6 +338,7 @@ func (b *Bwhatsapp) handleDocumentMessage(msg *events.Message) { Protocol: b.Protocol, Extra: make(map[string][]interface{}), ID: msg.Info.ID, + ParentID: parent, } if avatarURL, exists := b.userAvatars[senderJID.String()]; exists {