From 1fee32324736a188af02e985bdc8b571e9addd55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathana=C3=ABl?= Date: Thu, 25 Jun 2020 00:35:49 +0200 Subject: [PATCH] Reload user information when a new contact is detected (whatsapp) (#1160) Before returning an empty string, we refresh the WhatsApp contacts and if we found the one we wanted, we can return a real name. Fixes #796 --- bridge/whatsapp/helpers.go | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/bridge/whatsapp/helpers.go b/bridge/whatsapp/helpers.go index f45d6246..aa5f3188 100644 --- a/bridge/whatsapp/helpers.go +++ b/bridge/whatsapp/helpers.go @@ -80,8 +80,33 @@ func (b *Bwhatsapp) getSenderName(senderJid string) string { // 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 - return sender.Notify + if sender.Notify != "" { + return sender.Notify + } + + if sender.Short != "" { + return sender.Short + } } + + // try to reload this contact + _, err := b.conn.Contacts() + if err != nil { + b.Log.Errorf("error on update of contacts: %v", err) + } + + if contact, exists := b.conn.Store.Contacts[senderJid]; exists { + // Add it to the user map + b.users[senderJid] = contact + + if contact.Name != "" { + return contact.Name + } + // if user is not in phone contacts + // same as above + return contact.Notify + } + return "" }