diff options
Diffstat (limited to 'protocols/Telegram/src/groupchat.cpp')
-rw-r--r-- | protocols/Telegram/src/groupchat.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/protocols/Telegram/src/groupchat.cpp b/protocols/Telegram/src/groupchat.cpp index c456f05558..4962a1ac85 100644 --- a/protocols/Telegram/src/groupchat.cpp +++ b/protocols/Telegram/src/groupchat.cpp @@ -224,20 +224,29 @@ void CTelegramProto::Chat_LogMenu(GCHOOK *gch) { switch (gch->dwData) { case IDM_LEAVE: - int64_t id = GetId(gch->si->hContact); - if (auto *pUser = FindUser(id)) { - pUser->m_si = nullptr; - SendQuery(new TD::leaveChat(pUser->chatId)); - } - - Contact::Hide(gch->si->hContact); - Contact::RemoveFromList(gch->si->hContact); - - Chat_Terminate(gch->si); + SvcLeaveChat(gch->si->hContact, 0); break; } } +INT_PTR CTelegramProto::SvcLeaveChat(WPARAM hContact, LPARAM) +{ + int64_t id = GetId(hContact); + if (auto *pUser = FindUser(id)) { + pUser->m_si = nullptr; + SendQuery(new TD::leaveChat(pUser->chatId)); + } + + Contact::Hide(hContact); + Contact::RemoveFromList(hContact); + + wchar_t wszId[100]; + _i64tow(id, wszId, 10); + if (auto *si = Chat_Find(wszId, m_szModuleName)) + Chat_Terminate(si); + return 0; +} + void CTelegramProto::Chat_SendPrivateMessage(GCHOOK *gch) { MCONTACT hContact; |