summaryrefslogtreecommitdiff
path: root/protocols/Telegram/src
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/src')
-rw-r--r--protocols/Telegram/src/proto.cpp4
-rw-r--r--protocols/Telegram/src/utils.cpp20
2 files changed, 15 insertions, 9 deletions
diff --git a/protocols/Telegram/src/proto.cpp b/protocols/Telegram/src/proto.cpp
index b9f362fea0..22816bd7ba 100644
--- a/protocols/Telegram/src/proto.cpp
+++ b/protocols/Telegram/src/proto.cpp
@@ -180,10 +180,6 @@ MCONTACT CTelegramProto::AddToList(int flags, PROTOSEARCHRESULT *psr)
return 0;
auto id = _wtoi64(psr->id.w);
- if (auto *pUser = FindUser(id))
- if (pUser->hContact != INVALID_CONTACT_ID)
- return pUser->hContact;
-
auto *pUser = AddUser(id, false);
if (flags & PALF_TEMPORARY)
Contact::RemoveFromList(pUser->hContact);
diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp
index 3bba3e0e3f..9a2cc15f8b 100644
--- a/protocols/Telegram/src/utils.cpp
+++ b/protocols/Telegram/src/utils.cpp
@@ -130,7 +130,8 @@ TG_USER* CTelegramProto::AddUser(int64_t id, bool bIsChat)
{
auto *pUser = FindUser(id);
if (pUser != nullptr)
- return pUser;
+ if (pUser->hContact != INVALID_CONTACT_ID)
+ return pUser;
MCONTACT hContact = db_add_contact();
Proto_AddToContact(hContact, m_szModuleName);
@@ -144,10 +145,19 @@ TG_USER* CTelegramProto::AddUser(int64_t id, bool bIsChat)
else if (mir_wstrlen(m_wszDefaultGroup))
Clist_SetGroup(hContact, m_wszDefaultGroup);
- pUser = new TG_USER(id, hContact, bIsChat);
- m_arUsers.insert(pUser);
- if (!bIsChat)
- m_arChats.insert(pUser);
+ if (pUser == nullptr) {
+ pUser = new TG_USER(id, hContact, bIsChat);
+ m_arUsers.insert(pUser);
+ if (!bIsChat)
+ m_arChats.insert(pUser);
+ }
+ else {
+ pUser->hContact = hContact;
+ setWString(hContact, "Nick", pUser->wszNick);
+ setWString(hContact, "FirstName", pUser->wszFirstName);
+ setWString(hContact, "LastName", pUser->wszLastName);
+ }
+
return pUser;
}