From 3c7699f80c5c4b8be13731c36d4deb4c6cc8eefe Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 7 Feb 2020 18:11:52 +0300 Subject: =?UTF-8?q?fixes=20#2202=20(ICQ:=20=D0=B2=D1=85=D0=BE=D0=B4=D1=8F?= =?UTF-8?q?=D1=89=D0=B8=D0=B5=20=D0=B8=D0=B7=D0=BE=D0=B1=D1=80=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B5=20=D0=BF=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=D1=87=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=87=D0=B8=D1=82=D0=B0=D0=BD=D0=BD=D1=8B=D0=BC=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocols/ICQ-WIM/src/proto.cpp | 11 +---------- protocols/ICQ-WIM/src/proto.h | 1 + protocols/ICQ-WIM/src/server.cpp | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/protocols/ICQ-WIM/src/proto.cpp b/protocols/ICQ-WIM/src/proto.cpp index 0e5cb32fb0..e36dbe39f8 100644 --- a/protocols/ICQ-WIM/src/proto.cpp +++ b/protocols/ICQ-WIM/src/proto.cpp @@ -319,16 +319,7 @@ int CIcqProto::OnDbEventRead(WPARAM, LPARAM hDbEvent) if (mir_strcmp(szProto, m_szModuleName)) return 0; - if (m_bOnline) { - m_impl.m_markRead.Start(200); - - IcqCacheItem *pCache = FindContactByUIN(GetUserId(hContact)); - if (pCache) { - mir_cslock lck(m_csMarkReadQueue); - if (m_arMarkReadQueue.indexOf(pCache) == -1) - m_arMarkReadQueue.insert(pCache); - } - } + MarkAsRead(hContact); return 0; } diff --git a/protocols/ICQ-WIM/src/proto.h b/protocols/ICQ-WIM/src/proto.h index 7c8100eca7..6a06db66db 100644 --- a/protocols/ICQ-WIM/src/proto.h +++ b/protocols/ICQ-WIM/src/proto.h @@ -240,6 +240,7 @@ class CIcqProto : public PROTO void EmailNotification(const wchar_t *pwszText); void GetPermitDeny(); wchar_t* GetUIN(MCONTACT hContact); + void MarkAsRead(MCONTACT hContact); void MoveContactToGroup(MCONTACT hContact, const wchar_t *pwszGroup, const wchar_t *pwszNewGroup); bool RetrievePassword(); void RetrieveUserHistory(MCONTACT, __int64 startMsgId, __int64 endMsgId = -1); diff --git a/protocols/ICQ-WIM/src/server.cpp b/protocols/ICQ-WIM/src/server.cpp index 40dde5a451..12b7a33f80 100644 --- a/protocols/ICQ-WIM/src/server.cpp +++ b/protocols/ICQ-WIM/src/server.cpp @@ -211,6 +211,23 @@ void CIcqProto::OnLoggedOut() ///////////////////////////////////////////////////////////////////////////////////////// +void CIcqProto::MarkAsRead(MCONTACT hContact) +{ + if (!m_bOnline) + return; + + m_impl.m_markRead.Start(200); + + IcqCacheItem *pCache = FindContactByUIN(GetUserId(hContact)); + if (pCache) { + mir_cslock lck(m_csMarkReadQueue); + if (m_arMarkReadQueue.indexOf(pCache) == -1) + m_arMarkReadQueue.insert(pCache); + } +} + +///////////////////////////////////////////////////////////////////////////////////////// + MCONTACT CIcqProto::ParseBuddyInfo(const JSONNode &buddy, MCONTACT hContact) { // user chat? @@ -407,6 +424,8 @@ void CIcqProto::ParseMessage(MCONTACT hContact, __int64 &lastMsgId, const JSONNo pReq->hContact = hContact; pReq << CHAR_PARAM("aimsid", m_aimsid) << CHAR_PARAM("previews", "600"); Push(pReq); + + MarkAsRead(hContact); return; } -- cgit v1.2.3