From f8097944ef817fb6e10eee6f7dcfe7412c43beb2 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 3 Mar 2023 20:52:23 +0300 Subject: =?UTF-8?q?fixes=20#3386=20(Telegram:=20=D0=BF=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=BE=D0=BF?= =?UTF-8?q?=D1=8B=D1=82=D0=BA=D0=B5=20=D0=BF=D0=BE=D1=81=D0=BC=D0=BE=D1=82?= =?UTF-8?q?=D1=80=D0=B5=D1=82=D1=8C=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8E=20=D0=BE=20=D0=BD=D0=B0=D0=B9=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D0=BE=D0=BC=20=D0=BA=D0=BE=D0=BD=D1=82=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocols/Telegram/src/proto.cpp | 4 ---- protocols/Telegram/src/utils.cpp | 20 +++++++++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) (limited to 'protocols/Telegram/src') 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; } -- cgit v1.2.3