diff options
Diffstat (limited to 'protocols/Telegram/src')
-rw-r--r-- | protocols/Telegram/src/proto.cpp | 4 | ||||
-rw-r--r-- | protocols/Telegram/src/utils.cpp | 20 |
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;
}
|