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.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp
index 0228dc3756..7d16c34246 100644
--- a/protocols/Telegram/src/utils.cpp
+++ b/protocols/Telegram/src/utils.cpp
@@ -17,6 +17,52 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h"
+void CMTProto::UpdateString(MCONTACT hContact, const char *pszSetting, const std::string &str)
+{
+ if (str.empty())
+ delSetting(hContact, pszSetting);
+ else
+ setUString(hContact, pszSetting, str.c_str());
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// Users
+
+MCONTACT CMTProto::FindUser(uint64_t id)
+{
+ if (auto *pCache = m_arUsers.find((TG_USER *)&id))
+ return pCache->hContact;
+
+ return INVALID_CONTACT_ID;
+}
+
+MCONTACT 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));
+ }
+
+ return hContact;
+}
+
/////////////////////////////////////////////////////////////////////////////////////////
// Popups