diff options
Diffstat (limited to 'protocols/Telegram/src/utils.cpp')
-rw-r--r-- | protocols/Telegram/src/utils.cpp | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp index 7d16c34246..baf10e031d 100644 --- a/protocols/Telegram/src/utils.cpp +++ b/protocols/Telegram/src/utils.cpp @@ -28,39 +28,40 @@ void CMTProto::UpdateString(MCONTACT hContact, const char *pszSetting, const std ///////////////////////////////////////////////////////////////////////////////////////// // Users -MCONTACT CMTProto::FindUser(uint64_t id) +TG_USER* CMTProto::FindUser(uint64_t id) { if (auto *pCache = m_arUsers.find((TG_USER *)&id)) - return pCache->hContact; + return pCache; - return INVALID_CONTACT_ID; + return nullptr; } -MCONTACT CMTProto::AddUser(uint64_t id, bool bIsChat) +TG_USER* CMTProto::AddUser(uint64_t id, bool bIsChat) { - MCONTACT hContact = FindUser(id); - if (hContact == INVALID_CONTACT_ID) { - hContact = db_add_contact(); - Proto_AddToContact(hContact, m_szModuleName); - - char szId[100]; - _i64toa(id, szId, 10); - - if (bIsChat) { - Clist_SetGroup(hContact, TranslateT("Chat rooms")); - setByte(hContact, "ChatRoom", 1); - setString(hContact, "ChatRoomID", szId); - } - else { - setString(hContact, DBKEY_ID, szId); - if (mir_wstrlen(m_wszDefaultGroup)) - Clist_SetGroup(hContact, m_wszDefaultGroup); - } - - m_arUsers.insert(new TG_USER(id, hContact, bIsChat)); + auto *pUser = FindUser(id); + if (pUser != nullptr) + return pUser; + + MCONTACT hContact = db_add_contact(); + Proto_AddToContact(hContact, m_szModuleName); + + char szId[100]; + _i64toa(id, szId, 10); + + if (bIsChat) { + Clist_SetGroup(hContact, TranslateT("Chat rooms")); + setByte(hContact, "ChatRoom", 1); + setString(hContact, "ChatRoomID", szId); } - - return hContact; + else { + setString(hContact, DBKEY_ID, szId); + if (mir_wstrlen(m_wszDefaultGroup)) + Clist_SetGroup(hContact, m_wszDefaultGroup); + } + + pUser = new TG_USER(id, hContact, bIsChat); + m_arUsers.insert(pUser); + return pUser; } ///////////////////////////////////////////////////////////////////////////////////////// |