From 367fc21050725d43fe38eaed2b2474a6f0a42a51 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 13 Dec 2022 21:13:42 +0300 Subject: Telegram: - the first version of contact list reading - the phone number is not a primary key anymore --- protocols/Telegram/src/mt_proto.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'protocols/Telegram/src/mt_proto.cpp') diff --git a/protocols/Telegram/src/mt_proto.cpp b/protocols/Telegram/src/mt_proto.cpp index 8f8476636b..eb5c7be0ee 100644 --- a/protocols/Telegram/src/mt_proto.cpp +++ b/protocols/Telegram/src/mt_proto.cpp @@ -1,8 +1,17 @@ #include "stdafx.h" +static int CompareUsers(const TG_USER *p1, const TG_USER *p2) +{ + if (p1->id == p2->id) + return 0; + + return (p1->id < p2->id) ? -1 : 1; +} + CMTProto::CMTProto(const char* protoName, const wchar_t* userName) : PROTO(protoName, userName), m_pClientMmanager(std::make_unique()), + m_arUsers(10, CompareUsers), m_arRequests(10, NumericKeySortT), m_szOwnPhone(this, "Phone"), m_wszDefaultGroup(this, "DefaultGroup", L"Telegram"), @@ -20,6 +29,20 @@ CMTProto::~CMTProto() { } +void CMTProto::OnModulesLoaded() +{ + CMStringA szId(getMStringA(DBKEY_ID)); + if (!szId.IsEmpty()) + m_arUsers.insert(new TG_USER(_atoi64(szId.c_str()), 0)); + + for (auto &cc : AccContacts()) { + bool isGroupChat = isChatRoom(cc); + szId = getMStringA(cc, isGroupChat ? "ChatRoomID" : DBKEY_ID); + if (!szId.IsEmpty()) + m_arUsers.insert(new TG_USER(_atoi64(szId.c_str()), cc, isGroupChat)); + } +} + void CMTProto::OnErase() { DeleteDirectoryTreeW(GetProtoFolder(), false); -- cgit v1.2.3