summaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-02-29 21:32:45 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-02-29 21:32:45 +0300
commitf0173fd8343e7f1469b40ea8372f6b951846f63b (patch)
tree05a775d2c18d8eb43d7172bd4e13203d75e83e0a /protocols
parent5792d59c3ed577096556b744a51bb375e59c325f (diff)
MessageState: rewritten from scratch to work
Diffstat (limited to 'protocols')
-rw-r--r--protocols/ICQ-WIM/src/poll.cpp3
-rwxr-xr-xprotocols/JabberG/src/jabber_thread.cpp9
-rw-r--r--protocols/VKontakte/src/vk_history.cpp6
-rw-r--r--protocols/VKontakte/src/vk_messages.cpp7
-rw-r--r--protocols/VKontakte/src/vk_pollserver.cpp13
5 files changed, 15 insertions, 23 deletions
diff --git a/protocols/ICQ-WIM/src/poll.cpp b/protocols/ICQ-WIM/src/poll.cpp
index 4331ebe8c9..2fa3e7571c 100644
--- a/protocols/ICQ-WIM/src/poll.cpp
+++ b/protocols/ICQ-WIM/src/poll.cpp
@@ -217,8 +217,7 @@ void CIcqProto::ProcessHistData(const JSONNode &ev)
if (srvRemoteRead > lastRemoteRead) {
setId(hContact, DB_KEY_REMOTEREAD, srvRemoteRead);
- MessageReadData data(time(0), MRD_TYPE_READTIME);
- CallService(MS_MESSAGESTATE_UPDATE, hContact, (LPARAM)&data);
+ CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_READ);
}
}
}
diff --git a/protocols/JabberG/src/jabber_thread.cpp b/protocols/JabberG/src/jabber_thread.cpp
index 51ef853e94..432510910c 100755
--- a/protocols/JabberG/src/jabber_thread.cpp
+++ b/protocols/JabberG/src/jabber_thread.cpp
@@ -1198,13 +1198,14 @@ void CJabberProto::OnProcessMessage(const TiXmlElement *node, ThreadData *info)
nPacketId = JabberGetPacketID(node);
if (nPacketId != -1)
ProtoBroadcastAck(hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE)nPacketId);
+
+ if (g_plugin.bMessageState)
+ CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_DELIVERED);
}
if (auto *n = XmlGetChildByTag(node, "displayed", "xmlns", JABBER_FEAT_CHAT_MARKERS))
- if (g_plugin.bMessageState) {
- MessageReadData readData(time(0), MRD_TYPE_READTIME);
- CallService(MS_MESSAGESTATE_UPDATE, hContact, (LPARAM)&readData);
- }
+ if (g_plugin.bMessageState)
+ CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_READ);
JabberReadXep203delay(node, msgTime);
diff --git a/protocols/VKontakte/src/vk_history.cpp b/protocols/VKontakte/src/vk_history.cpp
index 47283a5e18..aa5286312b 100644
--- a/protocols/VKontakte/src/vk_history.cpp
+++ b/protocols/VKontakte/src/vk_history.cpp
@@ -315,10 +315,8 @@ void CVkProto::OnReceiveHistoryMessages(NETLIBHTTPREQUEST *reply, AsyncHttpReque
setDword(param->hContact, "lastmsgid", iLastMsgId);
- if (g_bMessageState) {
- MessageReadData data(tLastReadMessageTime, MRD_TYPE_MESSAGETIME);
- CallService(MS_MESSAGESTATE_UPDATE, param->hContact, (LPARAM)&data);
- }
+ if (g_bMessageState)
+ CallService(MS_MESSAGESTATE_UPDATE, param->hContact, MRD_TYPE_DELIVERED);
int once = jnResponse["once"].as_int();
int iRCount = jnResponse["rcount"].as_int();
diff --git a/protocols/VKontakte/src/vk_messages.cpp b/protocols/VKontakte/src/vk_messages.cpp
index bfdcf3003d..ce7cbe2736 100644
--- a/protocols/VKontakte/src/vk_messages.cpp
+++ b/protocols/VKontakte/src/vk_messages.cpp
@@ -438,14 +438,11 @@ void CVkProto::OnReceiveDlgs(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq)
szGroupIds.AppendFormat(szGroupIds.IsEmpty() ? "%d" : ",%d", -1 * uid);
if (g_bMessageState) {
- time_t tLastReadMessageTime = jnDlg["date"].as_int();
bool isOut = jnDlg["out"].as_bool();
bool isRead = jnDlg["read_state"].as_bool();
- if (isRead && isOut) {
- MessageReadData data(tLastReadMessageTime, MRD_TYPE_MESSAGETIME);
- CallService(MS_MESSAGESTATE_UPDATE, hContact, (LPARAM)&data);
- }
+ if (isRead && isOut)
+ CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_DELIVERED);
}
}
diff --git a/protocols/VKontakte/src/vk_pollserver.cpp b/protocols/VKontakte/src/vk_pollserver.cpp
index 1e872b2c5e..aaee82e5fa 100644
--- a/protocols/VKontakte/src/vk_pollserver.cpp
+++ b/protocols/VKontakte/src/vk_pollserver.cpp
@@ -102,12 +102,11 @@ void CVkProto::PollUpdates(const JSONNode &jnUpdates)
if (hContact != 0 && (flags & VKFLAG_MSGUNREAD) && !IsMessageExist(msgid, vkIN)) {
setDword(hContact, "LastMsgReadTime", time(0));
- if (g_bMessageState) {
- MessageReadData data(time(0), MRD_TYPE_READTIME);
- CallService(MS_MESSAGESTATE_UPDATE, hContact, (LPARAM)&data);
- }
+ if (g_bMessageState)
+ CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_READ);
else
SetSrmmReadStatus(hContact);
+
if (m_vkOptions.bUserForceInvisibleOnActivity)
SetInvisible(hContact);
if (m_vkOptions.bSyncReadMessageStatusFromServer)
@@ -176,10 +175,8 @@ void CVkProto::PollUpdates(const JSONNode &jnUpdates)
hContact = FindUser(uid);
if (hContact != 0) {
setDword(hContact, "LastMsgReadTime", time(0));
- if (g_bMessageState) {
- MessageReadData data(time(0), MRD_TYPE_READTIME);
- CallService(MS_MESSAGESTATE_UPDATE, hContact, (LPARAM)&data);
- }
+ if (g_bMessageState)
+ CallService(MS_MESSAGESTATE_UPDATE, hContact, MRD_TYPE_READ);
else
SetSrmmReadStatus(hContact);