From 47b79689fcbe77ab19eb577487ef70642fa291f7 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 15 Oct 2024 20:00:52 +0300 Subject: =?UTF-8?q?fixes=20#4720=20(NewStory:=20=D0=B2=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B8=D1=82=D1=8C=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=BE=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20?= =?UTF-8?q?MessageState)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mir_app/src/mir_app.def | 1 + src/mir_app/src/mir_app64.def | 1 + src/mir_app/src/srmm_main.cpp | 27 +++++++++++++++++++++++++++ src/mir_core/src/db.cpp | 6 ++++-- 4 files changed, 33 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 0aa5b1fe10..1f7e1d1728 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -990,3 +990,4 @@ _Proto_CanDeleteHistory@8 @1124 NONAME ?isCustom@EventInfo@DB@@QBE_NH@Z @1128 NONAME ?InsertBbcodeString@CSrmmBaseDialog@@IAEXPB_W@Z @1129 NONAME ?markRead@SESSION_INFO@@QAEX_N@Z @1130 NONAME +?Srmm_NotifyRemoteRead@@YGXII@Z @1131 NONAME diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index a5f99bcaf3..ef42406121 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -990,3 +990,4 @@ Proto_CanDeleteHistory @1118 NONAME ?isCustom@EventInfo@DB@@QEBA_NH@Z @1122 NONAME ?InsertBbcodeString@CSrmmBaseDialog@@IEAAXPEB_W@Z @1123 NONAME ?markRead@SESSION_INFO@@QEAAX_N@Z @1124 NONAME +?Srmm_NotifyRemoteRead@@YAXII@Z @1125 NONAME diff --git a/src/mir_app/src/srmm_main.cpp b/src/mir_app/src/srmm_main.cpp index 7b07a9c790..b8c0a4cc3c 100644 --- a/src/mir_app/src/srmm_main.cpp +++ b/src/mir_app/src/srmm_main.cpp @@ -19,6 +19,9 @@ along with this program. If not, see . #include "stdafx.h" #include "chat.h" +#include +#include + HCURSOR g_hCurHyperlinkHand; HANDLE hHookIconsChanged, hHookIconPressedEvt, hHookSrmmEvent; @@ -27,6 +30,19 @@ static HGENMENU hmiEmpty; void LoadSrmmToolbarModule(); void UnloadSrmmToolbarModule(); +///////////////////////////////////////////////////////////////////////////////////////// + +static bool g_bHasMessageState, g_bHasNewStory; + +MIR_APP_DLL(void) Srmm_NotifyRemoteRead(MCONTACT hContact, MEVENT hEvent) +{ + if (g_bHasMessageState) + CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_READ); + + if (g_bHasNewStory) + NS_NotifyRemoteRead(hContact, hEvent); +} + ///////////////////////////////////////////////////////////////////////////////////////// // Empty history service for main menu @@ -125,8 +141,19 @@ static int OnPrebuildContactMenu(WPARAM hContact, LPARAM) ///////////////////////////////////////////////////////////////////////////////////////// +static int OnModuleLoaded(WPARAM, LPARAM) +{ + g_bHasMessageState = ServiceExists(MS_MESSAGESTATE_UPDATE); + g_bHasNewStory = ServiceExists("NewStory/FileReady"); + return 0; +} + void SrmmModulesLoaded() { + HookEvent(ME_SYSTEM_MODULELOAD, OnModuleLoaded); + HookEvent(ME_SYSTEM_MODULEUNLOAD, OnModuleLoaded); + OnModuleLoaded(0, 0); + // menu item CMenuItem mi(&g_plugin); SET_UID(mi, 0x0d4306aa, 0xe31e, 0x46ee, 0x89, 0x88, 0x3a, 0x2e, 0x05, 0xa6, 0xf3, 0xbc); diff --git a/src/mir_core/src/db.cpp b/src/mir_core/src/db.cpp index 9527537a4d..b80528320a 100644 --- a/src/mir_core/src/db.cpp +++ b/src/mir_core/src/db.cpp @@ -487,8 +487,10 @@ MIR_CORE_DLL(int) db_event_markRead(MCONTACT hContact, MEVENT hDbEvent, bool bFr return 1; // we received remote mark read command - if (bFromServer) - CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_READ); + if (bFromServer) { + MIR_APP_DLL(void) Srmm_NotifyRemoteRead(MCONTACT hContact, MEVENT hEvent); + Srmm_NotifyRemoteRead(hContact, hDbEvent); + } if (!g_pCurrDb->MarkEventRead(hContact, hDbEvent)) return 1; -- cgit v1.2.3