summaryrefslogtreecommitdiff
path: root/protocols/Facebook/src
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2023-02-10 19:46:31 +0300
committerGeorge Hazan <ghazan@miranda.im>2023-02-10 19:46:31 +0300
commita7bf177e6e4aedcaafca186b50e6666788e45f98 (patch)
tree98b5d4a37a93b5f93eb2399ed38d696dea3c65bd /protocols/Facebook/src
parent2046bf33c966d9db3fbc98c1e067788408751104 (diff)
ME_DB_EVENT_MARKED_READ: recursion prevention
Diffstat (limited to 'protocols/Facebook/src')
-rw-r--r--protocols/Facebook/src/proto.cpp1
-rw-r--r--protocols/Facebook/src/proto.h3
-rw-r--r--protocols/Facebook/src/server.cpp16
3 files changed, 5 insertions, 15 deletions
diff --git a/protocols/Facebook/src/proto.cpp b/protocols/Facebook/src/proto.cpp
index f594a7ad91..82043fdf55 100644
--- a/protocols/Facebook/src/proto.cpp
+++ b/protocols/Facebook/src/proto.cpp
@@ -108,7 +108,6 @@ FacebookProto::FacebookProto(const char *proto_name, const wchar_t *username) :
HookProtoEvent(ME_GC_EVENT, &FacebookProto::GroupchatEventHook);
HookProtoEvent(ME_GC_BUILDMENU, &FacebookProto::GroupchatMenuHook);
HookProtoEvent(ME_OPT_INITIALISE, &FacebookProto::OnOptionsInit);
- HookProtoEvent(ME_DB_EVENT_MARKED_READ, &FacebookProto::OnMarkedRead);
// Group chats
GCREGISTER gcr = {};
diff --git a/protocols/Facebook/src/proto.h b/protocols/Facebook/src/proto.h
index fa110918f4..20d218b4b1 100644
--- a/protocols/Facebook/src/proto.h
+++ b/protocols/Facebook/src/proto.h
@@ -532,10 +532,11 @@ public:
int SetStatus(int iNewStatus) override;
int UserIsTyping(MCONTACT hContact, int type) override;
+ void OnMarkRead(MCONTACT, MEVENT) override;
+
////////////////////////////////////////////////////////////////////////////////////////
// Events
- int __cdecl OnMarkedRead(WPARAM, LPARAM);
int __cdecl OnOptionsInit(WPARAM, LPARAM);
int __cdecl GroupchatMenuHook(WPARAM, LPARAM);
diff --git a/protocols/Facebook/src/server.cpp b/protocols/Facebook/src/server.cpp
index cae092fcbd..a8fd12ebc7 100644
--- a/protocols/Facebook/src/server.cpp
+++ b/protocols/Facebook/src/server.cpp
@@ -447,19 +447,10 @@ LBL_Begin:
/////////////////////////////////////////////////////////////////////////////////////////
-int FacebookProto::OnMarkedRead(WPARAM, LPARAM hDbEvent)
+void FacebookProto::OnMarkRead(MCONTACT hContact, MEVENT)
{
- MCONTACT hContact = db_event_getContact(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;
-
if (m_bKeepUnread)
- return 0;
+ return;
JSONNode root; root << BOOL_PARAM("state", true) << INT_PARAM("syncSeqId", m_sid) << CHAR_PARAM("mark", "read");
if (isChatRoom(hContact))
@@ -467,7 +458,6 @@ int FacebookProto::OnMarkedRead(WPARAM, LPARAM hDbEvent)
else
root << CHAR_PARAM("otherUserFbId", getMStringA(hContact, DBKEY_ID));
MqttPublish("/mark_thread", root);
- return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////
@@ -977,7 +967,7 @@ void FacebookProto::OnPublishReadReceipt(const JSONNode &root)
break;
if (!dbei.markedRead())
- db_event_markRead(pUser->hContact, ev);
+ db_event_markRead(pUser->hContact, ev, true);
}
}