From d9c93c40267f416ebef07fcd3f4f6c1677e7e857 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 7 Mar 2023 13:16:15 +0300 Subject: Telegram: clean hContact on contact deletion --- protocols/Telegram/src/proto.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'protocols/Telegram/src') diff --git a/protocols/Telegram/src/proto.cpp b/protocols/Telegram/src/proto.cpp index afe4cfe20f..b265ccea6c 100644 --- a/protocols/Telegram/src/proto.cpp +++ b/protocols/Telegram/src/proto.cpp @@ -91,11 +91,18 @@ CTelegramProto::~CTelegramProto() void CTelegramProto::OnContactDeleted(MCONTACT hContact) { - CMStringA szId(getMStringA(hContact, DBKEY_ID)); - if (!szId.IsEmpty()) { - TD::array ids; - ids.push_back(_atoi64(szId)); - SendQuery(new TD::removeContacts(std::move(ids))); + TD::int53 id = _atoi64(getMStringA(hContact, DBKEY_ID)); + if (id == 0) + return; + + TD::array ids; + ids.push_back(id); + SendQuery(new TD::removeContacts(std::move(ids))); + + if (auto *pUser = FindUser(id)) { + pUser->hContact = INVALID_CONTACT_ID; + pUser->wszFirstName = getMStringW(hContact, "FirstName"); + pUser->wszLastName = getMStringW(hContact, "LastName"); } } -- cgit v1.2.3