From ddffb312fc3601adf800e357410e2bcb6c34240a Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <me@adhisimon.org> Date: Fri, 28 Oct 2016 19:10:34 +0700 Subject: [PATCH] tambah teman jika bukan ketika cek offline --- adaptor-xmpp.js | 16 ++++++++++------ matrix-util.js | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/adaptor-xmpp.js b/adaptor-xmpp.js index bbc113c..4b3b3ee 100644 --- a/adaptor-xmpp.js +++ b/adaptor-xmpp.js @@ -65,7 +65,7 @@ function onBuddy(jid, state, statusText, resource) { matrixUtil.updateBuddyState(jid, state, statusText, resource); } -function isPartnerOffline(partner) { +function _isPartnerOffline(partner) { if (!matrix) { return false; } if (!isAFriend(partner)) { @@ -89,6 +89,14 @@ function isPartnerOffline(partner) { return true; } +function isPartnerOffline(partner) { + if (!matrixUtil.isAFriend(partner)) { + addFriend(partner); + } + + return matrixUtil.isPartnerOffline(partner); +} + function init(_username, _password, _logger, _callbacks) { username = _username; password = _password; @@ -159,11 +167,7 @@ function addFriend(friend) { } function isAFriend(jid) { - if (!matrix) { return false; }; - if (!matrix.buddies) { return false; } - if (!matrix.buddies[jid]) { return false; } - - return true; + return matrixUtil.isAFriend(jid); } exports.init = init; diff --git a/matrix-util.js b/matrix-util.js index d0b2264..d87c3a8 100644 --- a/matrix-util.js +++ b/matrix-util.js @@ -54,3 +54,35 @@ MatrixUtil.prototype.updateBuddyState = function(jid, state, statusText, resourc catch(e) {}; } } + +MatrixUtil.prototype.isAFriend = function(jid) { + var matrix = this.matrix; + + if (!matrix) { return false; }; + if (!matrix.buddies) { return false; } + if (!matrix.buddies[jid]) { return false; } + + return true; +} + +MatrixUtil.prototype.isPartnerOffline = function(partner) { + var matrix = this.matrix; + var logger = this.logger; + + if (!matrix) { return false; } + + if (!matrix.buddies[partner]) { return false; } + if (!matrix.buddies[partner].resources) { return false; }; + + var resources = matrix.buddies[partner].resources; + for (var key in resources) { + if (resources.hasOwnProperty(key)) { + var resource = resources[key]; + if (resources[key].state == 'online') { + return false; + } + } + } + logger.verbose('Offline partner detected: ' + partner); + return true; +} -- 1.9.0