summaryrefslogtreecommitdiff
path: root/protocols/Telegram/src/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/src/utils.cpp')
-rw-r--r--protocols/Telegram/src/utils.cpp53
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;
}
/////////////////////////////////////////////////////////////////////////////////////////