From 6635344981d9bfb245ada6c685b3a179cfd6ef45 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 7 Jan 2023 21:13:52 +0300 Subject: Telegram: simple version of marking messages read --- protocols/Telegram/src/mt_proto.cpp | 25 +++++++++++++++++++++++++ protocols/Telegram/src/mt_proto.h | 1 + 2 files changed, 26 insertions(+) (limited to 'protocols') diff --git a/protocols/Telegram/src/mt_proto.cpp b/protocols/Telegram/src/mt_proto.cpp index a99c91eb31..d00f84c434 100644 --- a/protocols/Telegram/src/mt_proto.cpp +++ b/protocols/Telegram/src/mt_proto.cpp @@ -32,6 +32,7 @@ CMTProto::CMTProto(const char* protoName, const wchar_t* userName) : CreateProtoService(PS_CREATEACCMGRUI, &CMTProto::SvcCreateAccMgrUI); HookProtoEvent(ME_OPT_INITIALISE, &CMTProto::OnOptionsInit); + HookProtoEvent(ME_DB_EVENT_MARKED_READ, &CMTProto::OnDbMarkedRead); // default contacts group if (m_wszDefaultGroup == NULL) @@ -87,6 +88,30 @@ void CMTProto::OnErase() DeleteDirectoryTreeW(GetProtoFolder(), false); } +int CMTProto::OnDbMarkedRead(WPARAM hContact, LPARAM hDbEvent) +{ + if (!hContact) + return 0; + + // filter out only events of my protocol + const char *szProto = Proto_GetBaseAccountName(hContact); + if (mir_strcmp(szProto, m_szModuleName)) + return 0; + + ptrA userId(getStringA(hContact, DBKEY_ID)); + if (userId) { + DBEVENTINFO dbei = {}; + db_event_get(hDbEvent, &dbei); + if (dbei.szId) { + TD::array ids; + ids.push_back(_atoi64(dbei.szId)); + SendQuery(new TD::viewMessages(_atoi64(userId), 0, std::move(ids), true)); + } + } + + return 0; +} + INT_PTR CMTProto::GetCaps(int type, MCONTACT) { switch (type) { diff --git a/protocols/Telegram/src/mt_proto.h b/protocols/Telegram/src/mt_proto.h index 7aa85b722b..46439aee5f 100644 --- a/protocols/Telegram/src/mt_proto.h +++ b/protocols/Telegram/src/mt_proto.h @@ -173,6 +173,7 @@ public: // Events //////////////////////////////////////////////////////////////////////////// int __cdecl OnOptionsInit(WPARAM, LPARAM); + int __cdecl OnDbMarkedRead(WPARAM, LPARAM); // Options /////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3