From ef7ba795a1a2be36522c67a06822fbe3ec972782 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 6 Aug 2021 21:15:36 +0300 Subject: =?UTF-8?q?fixes=20#2940=20(ICQ:=20=D0=BF=D1=80=D0=B8=20=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=D0=B9=20=D1=81=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D0=B8=20=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=D0=B4=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B5=20=D0=B2=D0=B8=D0=B4=D0=B8=D1=82,=20=D1=87?= =?UTF-8?q?=D1=82=D0=BE=20=D0=BA=D0=BE=D0=BD=D1=82=D0=B0=D0=BA=D1=82=20?= =?UTF-8?q?=D0=B2=D0=BE=D1=88=D1=91=D0=BB=20=D0=B2=20=D1=81=D0=B5=D1=82?= =?UTF-8?q?=D1=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocols/ICQ-WIM/src/poll.cpp | 2 +- protocols/ICQ-WIM/src/server.cpp | 11 +++++++---- protocols/ICQ-WIM/src/version.h | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) (limited to 'protocols/ICQ-WIM/src') diff --git a/protocols/ICQ-WIM/src/poll.cpp b/protocols/ICQ-WIM/src/poll.cpp index b6bd58760d..bbf0792cc9 100644 --- a/protocols/ICQ-WIM/src/poll.cpp +++ b/protocols/ICQ-WIM/src/poll.cpp @@ -336,7 +336,7 @@ void CIcqProto::ProcessPresence(const JSONNode &ev) // if a client returns back online, we clear timers not to play with statuses anymore else pCache->m_timer1 = pCache->m_timer2 = 0; - setDword(pCache->m_hContact, "Status", iNewStatus); + setWord(pCache->m_hContact, "Status", iNewStatus); Json2string(pCache->m_hContact, ev, "friendly", "Nick"); CheckAvatarChange(pCache->m_hContact, ev); diff --git a/protocols/ICQ-WIM/src/server.cpp b/protocols/ICQ-WIM/src/server.cpp index c650fc2224..5e08e895e7 100644 --- a/protocols/ICQ-WIM/src/server.cpp +++ b/protocols/ICQ-WIM/src/server.cpp @@ -171,18 +171,18 @@ void CIcqProto::CheckStatus() // if the second timer is set up, activate it if (m_iTimeDiff2) { - setDword(it->m_hContact, "Status", m_iStatus2); + setWord(it->m_hContact, "Status", m_iStatus2); it->m_timer2 = now; } // if the second timer is not set, simply mark a contact as offline - else setDword(it->m_hContact, "Status", ID_STATUS_OFFLINE); + else setWord(it->m_hContact, "Status", ID_STATUS_OFFLINE); continue; } // if the second timer is expired, set status to offline if (diff2 && it->m_timer2 && now - it->m_timer2 > m_iTimeDiff2) { it->m_timer2 = 0; - setDword(it->m_hContact, "Status", ID_STATUS_OFFLINE); + setWord(it->m_hContact, "Status", ID_STATUS_OFFLINE); } } } @@ -349,7 +349,7 @@ MCONTACT CIcqProto::ParseBuddyInfo(const JSONNode &buddy, MCONTACT hContact) else delSetting(hContact, "MirVer"); CMStringW str(buddy["state"].as_mstring()); - setDword(hContact, "Status", StatusFromString(str)); + WORD wStatus = StatusFromString(str); const JSONNode &var = buddy["friendly"]; if (var) @@ -368,6 +368,9 @@ MCONTACT CIcqProto::ParseBuddyInfo(const JSONNode &buddy, MCONTACT hContact) // zero here means that a contact is currently online int lastSeen = buddy["lastseen"].as_int(); setDword(hContact, DB_KEY_LASTSEEN, lastSeen ? lastSeen : time(0)); + if (lastSeen == 0) + wStatus = ID_STATUS_ONLINE; + setDword(hContact, "Status", wStatus); Json2int(hContact, buddy, "official", "Official"); Json2int(hContact, buddy, "onlineTime", DB_KEY_ONLINETS); diff --git a/protocols/ICQ-WIM/src/version.h b/protocols/ICQ-WIM/src/version.h index a8e270e799..77882b494a 100644 --- a/protocols/ICQ-WIM/src/version.h +++ b/protocols/ICQ-WIM/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 96 #define __RELEASE_NUM 1 -#define __BUILD_NUM 2 +#define __BUILD_NUM 3 #include -- cgit v1.2.3