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/src | |
| parent | 2046bf33c966d9db3fbc98c1e067788408751104 (diff) | |
ME_DB_EVENT_MARKED_READ: recursion prevention
Diffstat (limited to 'protocols/Facebook/src')
| -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);
  	}
  }
  | 
