From a975b145daf3ccd1e418490a54f340e2d94386c7 Mon Sep 17 00:00:00 2001 From: Iiro Laiho Date: Tue, 29 Nov 2022 18:14:26 +0200 Subject: [PATCH] Code cleanup (whatsapp) --- bridge/whatsappmulti/handlers.go | 10 ++--- bridge/whatsappmulti/helpers.go | 70 ++++++++++++++------------------ 2 files changed, 36 insertions(+), 44 deletions(-) diff --git a/bridge/whatsappmulti/handlers.go b/bridge/whatsappmulti/handlers.go index dd7e87bd..ddeb22ef 100644 --- a/bridge/whatsappmulti/handlers.go +++ b/bridge/whatsappmulti/handlers.go @@ -51,7 +51,7 @@ func (b *Bwhatsapp) handleTextMessage(messageInfo types.MessageInfo, msg *proto. senderJID := messageInfo.Sender channel := messageInfo.Chat - senderName := b.getSenderName(messageInfo.Sender, messageInfo.PushName) + senderName := b.getSenderName(messageInfo) if senderName == "" { senderName = "Someone" // don't expose telephone number } @@ -118,7 +118,7 @@ func (b *Bwhatsapp) handleImageMessage(msg *events.Message) { imsg := msg.Message.GetImageMessage() senderJID := msg.Info.Sender - senderName := b.getSenderName(senderJID, msg.Info.PushName) + senderName := b.getSenderName(msg.Info) ci := imsg.GetContextInfo() if senderJID == (types.JID{}) && ci.Participant != nil { @@ -181,7 +181,7 @@ func (b *Bwhatsapp) handleVideoMessage(msg *events.Message) { imsg := msg.Message.GetVideoMessage() senderJID := msg.Info.Sender - senderName := b.getSenderName(senderJID, msg.Info.PushName) + senderName := b.getSenderName(msg.Info) ci := imsg.GetContextInfo() if senderJID == (types.JID{}) && ci.Participant != nil { @@ -238,7 +238,7 @@ func (b *Bwhatsapp) handleAudioMessage(msg *events.Message) { imsg := msg.Message.GetAudioMessage() senderJID := msg.Info.Sender - senderName := b.getSenderName(senderJID, msg.Info.PushName) + senderName := b.getSenderName(msg.Info) ci := imsg.GetContextInfo() if senderJID == (types.JID{}) && ci.Participant != nil { @@ -295,7 +295,7 @@ func (b *Bwhatsapp) handleDocumentMessage(msg *events.Message) { imsg := msg.Message.GetDocumentMessage() senderJID := msg.Info.Sender - senderName := b.getSenderName(senderJID, msg.Info.PushName) + senderName := b.getSenderName(msg.Info) ci := imsg.GetContextInfo() if senderJID == (types.JID{}) && ci.Participant != nil { diff --git a/bridge/whatsappmulti/helpers.go b/bridge/whatsappmulti/helpers.go index 767a5086..e9ee24ca 100644 --- a/bridge/whatsappmulti/helpers.go +++ b/bridge/whatsappmulti/helpers.go @@ -18,55 +18,47 @@ type ProfilePicInfo struct { Status int16 `json:"status"` } -func (b *Bwhatsapp) getSenderName(senderJid types.JID, AltName string) string { - if sender, exists := b.contacts[senderJid]; exists { - if sender.FullName != "" { - return sender.FullName +func (b *Bwhatsapp) getSenderName(info types.MessageInfo) string { + // Parse AD JID + var senderJid types.JID + senderJid.User, senderJid.Server = info.Sender.User, info.Sender.Server + + for i := 0; i < 2; i++ { + if sender, exists := b.contacts[senderJid]; exists { + if sender.FullName != "" { + return sender.FullName + } } // if user is not in phone contacts // it is the most obvious scenario unless you sync your phone contacts with some remote updated source // users can change it in their WhatsApp settings -> profile -> click on Avatar - if sender.PushName != "" { - return sender.PushName + if info.PushName != "" { + return info.PushName } - if sender.FirstName != "" { - return sender.FirstName - } - } - - // try to reload this contact - if _, err := b.wc.Store.Contacts.GetAllContacts(); err != nil { - b.Log.Errorf("error on update of contacts: %v", err) - } - - allcontacts, err := b.wc.Store.Contacts.GetAllContacts() - if err != nil { - b.Log.Errorf("error on update of contacts: %v", err) - } - - if len(allcontacts) > 0 { - b.contacts = allcontacts - } - - if sender, exists := b.contacts[senderJid]; exists { - if sender.FullName != "" { - return sender.FullName - } - // if user is not in phone contacts - // it is the most obvious scenario unless you sync your phone contacts with some remote updated source - // users can change it in their WhatsApp settings -> profile -> click on Avatar - if sender.PushName != "" { - return sender.PushName + if sender, exists := b.contacts[senderJid]; exists { + if sender.FirstName != "" { + return sender.FirstName + } } - if sender.FirstName != "" { - return sender.FirstName + if i > 0 { + break } - } - if AltName != "" { - return AltName + // try to reload this contact + if _, err := b.wc.Store.Contacts.GetAllContacts(); err != nil { + b.Log.Errorf("error on update of contacts: %v", err) + } + + allcontacts, err := b.wc.Store.Contacts.GetAllContacts() + if err != nil { + b.Log.Errorf("error on update of contacts: %v", err) + } + + if len(allcontacts) > 0 { + b.contacts = allcontacts + } } return "Someone"