From af546e2f55ccb9a270ce4967d1942aebfcbbea19 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 22 Dec 2023 17:55:36 +0300 Subject: DB::EventInfo::wipeNotify - useful helper to hide blinking event both from database & contact list --- protocols/Facebook/src/server.cpp | 7 +++---- protocols/JabberG/src/jabber_rc.cpp | 4 +--- protocols/VKontakte/src/misc.cpp | 5 +---- 3 files changed, 5 insertions(+), 11 deletions(-) (limited to 'protocols') diff --git a/protocols/Facebook/src/server.cpp b/protocols/Facebook/src/server.cpp index fcf1aacb2e..8601cd6db5 100644 --- a/protocols/Facebook/src/server.cpp +++ b/protocols/Facebook/src/server.cpp @@ -958,16 +958,15 @@ void FacebookProto::OnPublishReadReceipt(const JSONNode &root) uint32_t timestamp = _wtoi64(root["watermarkTimestampMs"].as_mstring()); for (MEVENT ev = db_event_firstUnread(pUser->hContact); ev != 0; ev = db_event_next(pUser->hContact, ev)) { - DBEVENTINFO dbei = {}; - if (db_event_get(ev, &dbei)) + DB::EventInfo dbei(ev); + if (!dbei) continue; if (dbei.timestamp > timestamp) break; if (dbei.flags & DBEF_SENT) - if (!dbei.markedRead()) - db_event_markRead(pUser->hContact, ev, true); + dbei.wipeNotify(ev); } } diff --git a/protocols/JabberG/src/jabber_rc.cpp b/protocols/JabberG/src/jabber_rc.cpp index 75a7ffa3b8..bd49cf6adf 100644 --- a/protocols/JabberG/src/jabber_rc.cpp +++ b/protocols/JabberG/src/jabber_rc.cpp @@ -560,9 +560,7 @@ int CJabberProto::AdhocForwardHandler(const TiXmlElement*, CJabberIqInfo *pInfo, nEventsSent++; - db_event_markRead(hContact, hDbEvent, true); - if (bRemoveCListEvents) - Clist_RemoveEvent(hContact, hDbEvent); + dbei.wipeNotify(hDbEvent); } } diff --git a/protocols/VKontakte/src/misc.cpp b/protocols/VKontakte/src/misc.cpp index 977e215386..6c5dcc8341 100644 --- a/protocols/VKontakte/src/misc.cpp +++ b/protocols/VKontakte/src/misc.cpp @@ -888,14 +888,11 @@ void CVkProto::MarkDialogAsRead(MCONTACT hContact) return; MEVENT hDBEvent = db_event_firstUnread(hContact); - MCONTACT hMContact = db_mc_tryMeta(hContact); while (hDBEvent != 0) { DBEVENTINFO dbei = {}; if (!db_event_get(hDBEvent, &dbei) && !mir_strcmp(m_szModuleName, dbei.szModule)) { db_event_markRead(hContact, hDBEvent, true); - Clist_RemoveEvent(hMContact, hDBEvent); - if (hContact != hMContact) - Clist_RemoveEvent(hContact, hDBEvent); + Clist_RemoveEvent(-1, hDBEvent); } hDBEvent = db_event_next(hContact, hDBEvent); -- cgit v1.2.3