diff options
author | George Hazan <ghazan@miranda.im> | 2023-02-10 19:46:31 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2023-02-10 19:46:31 +0300 |
commit | a7bf177e6e4aedcaafca186b50e6666788e45f98 (patch) | |
tree | 98b5d4a37a93b5f93eb2399ed38d696dea3c65bd /protocols/Facebook | |
parent | 2046bf33c966d9db3fbc98c1e067788408751104 (diff) |
ME_DB_EVENT_MARKED_READ: recursion prevention
Diffstat (limited to 'protocols/Facebook')
-rw-r--r-- | protocols/Facebook/src/proto.cpp | 1 | ||||
-rw-r--r-- | protocols/Facebook/src/proto.h | 3 | ||||
-rw-r--r-- | protocols/Facebook/src/server.cpp | 16 |
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);
}
}
|