summaryrefslogtreecommitdiff
path: root/protocols/JabberG/src/jabber_thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/JabberG/src/jabber_thread.cpp')
-rwxr-xr-xprotocols/JabberG/src/jabber_thread.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/protocols/JabberG/src/jabber_thread.cpp b/protocols/JabberG/src/jabber_thread.cpp
index abc46ca6a2..e10d285b74 100755
--- a/protocols/JabberG/src/jabber_thread.cpp
+++ b/protocols/JabberG/src/jabber_thread.cpp
@@ -1571,14 +1571,24 @@ void CJabberProto::OnProcessPresence(const TiXmlElement *node, ThreadData *info)
else if (!mir_strcmp(show, "chat")) status = ID_STATUS_FREECHAT;
}
+ int idleTime = 0;
+ if (auto *idle = XmlGetChildByTag(node, "idle", "xmlns", JABBER_FEAT_IDLE)) {
+ status = ID_STATUS_IDLE;
+ if (auto *szSince = XmlGetAttr(idle, "since"))
+ idleTime = str2time(szSince);
+ }
+
int priority = XmlGetChildInt(node, "priority");
const char *pszStatus = XmlGetChildText(node, "status");
ListAddResource(LIST_ROSTER, from, status, pszStatus, priority);
// XEP-0115: Entity Capabilities
pResourceStatus r(ResourceInfoFromJID(from));
- if (r != nullptr)
+ if (r != nullptr) {
+ if (idleTime)
+ r->m_dwIdleStartTime = idleTime;
OnProcessPresenceCapabilites(node, r);
+ }
UpdateJidDbSettings(from);