From 35e49b83894656aa8fd225c23fb794d15ed31506 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 9 Sep 2024 20:12:55 +0300 Subject: =?UTF-8?q?fixes=20#4642=20(Telegram:=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D1=85=D0=BE=D0=B4=D0=B5=20=D0=B4=D0=B2=D1=83?= =?UTF-8?q?=D1=85=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D1=80=D1=8F=D0=B4,=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B2=D0=BE=D0=B5=20=D1=81=D1=80=D0=B0=D0=B7=D1=83=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BC=D0=B5=D1=87=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=87=D1=82=D1=91=D0=BD=D0=BD=D1=8B=D0=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocols/Telegram/src/server.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'protocols') diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp index 81ec9f3edd..119ffe2396 100644 --- a/protocols/Telegram/src/server.cpp +++ b/protocols/Telegram/src/server.cpp @@ -860,23 +860,21 @@ void CTelegramProto::ProcessMarkRead(TD::updateChatReadInbox *pObj) if (pObj->last_read_inbox_message_id_) pUser->bInited = true; - MEVENT hLastRead = db_event_getById(m_szModuleName, msg2id(pObj->chat_id_, pObj->last_read_inbox_message_id_)); - if (hLastRead == 0) { + CMStringA szMaxId(msg2id(pObj->chat_id_, pObj->last_read_inbox_message_id_)); + if (db_event_getById(m_szModuleName, szMaxId) == 0) { debugLogA("unknown event, ignored"); return; } - bool bExit = false; + // make sure that all events with ids lower or equal than szMaxId are marked read for (MEVENT hEvent = db_event_firstUnread(pUser->hContact); hEvent; hEvent = db_event_next(pUser->hContact, hEvent)) { - if (bExit) - break; - - bExit = (hEvent == hLastRead); - - DBEVENTINFO dbei = {}; - if (db_event_get(hEvent, &dbei)) + DB::EventInfo dbei(hEvent, false); + if (!dbei || !dbei.szId) continue; + if (dbei.szId > szMaxId) + break; + if (!dbei.markedRead()) db_event_markRead(pUser->hContact, hEvent, true); } -- cgit v1.2.3