Commit ddffb312fc3601adf800e357410e2bcb6c34240a

Authored by Adhidarma Hadiwinoto
1 parent 70b9ea66ba
Exists in master

tambah teman jika bukan ketika cek offline

Showing 2 changed files with 42 additions and 6 deletions Side-by-side Diff

... ... @@ -65,7 +65,7 @@ function onBuddy(jid, state, statusText, resource) {
65 65 matrixUtil.updateBuddyState(jid, state, statusText, resource);
66 66 }
67 67  
68   -function isPartnerOffline(partner) {
  68 +function _isPartnerOffline(partner) {
69 69 if (!matrix) { return false; }
70 70  
71 71 if (!isAFriend(partner)) {
... ... @@ -89,6 +89,14 @@ function isPartnerOffline(partner) {
89 89 return true;
90 90 }
91 91  
  92 +function isPartnerOffline(partner) {
  93 + if (!matrixUtil.isAFriend(partner)) {
  94 + addFriend(partner);
  95 + }
  96 +
  97 + return matrixUtil.isPartnerOffline(partner);
  98 +}
  99 +
92 100 function init(_username, _password, _logger, _callbacks) {
93 101 username = _username;
94 102 password = _password;
... ... @@ -159,11 +167,7 @@ function addFriend(friend) {
159 167 }
160 168  
161 169 function isAFriend(jid) {
162   - if (!matrix) { return false; };
163   - if (!matrix.buddies) { return false; }
164   - if (!matrix.buddies[jid]) { return false; }
165   -
166   - return true;
  170 + return matrixUtil.isAFriend(jid);
167 171 }
168 172  
169 173 exports.init = init;
... ... @@ -54,3 +54,35 @@ MatrixUtil.prototype.updateBuddyState = function(jid, state, statusText, resourc
54 54 catch(e) {};
55 55 }
56 56 }
  57 +
  58 +MatrixUtil.prototype.isAFriend = function(jid) {
  59 + var matrix = this.matrix;
  60 +
  61 + if (!matrix) { return false; };
  62 + if (!matrix.buddies) { return false; }
  63 + if (!matrix.buddies[jid]) { return false; }
  64 +
  65 + return true;
  66 +}
  67 +
  68 +MatrixUtil.prototype.isPartnerOffline = function(partner) {
  69 + var matrix = this.matrix;
  70 + var logger = this.logger;
  71 +
  72 + if (!matrix) { return false; }
  73 +
  74 + if (!matrix.buddies[partner]) { return false; }
  75 + if (!matrix.buddies[partner].resources) { return false; };
  76 +
  77 + var resources = matrix.buddies[partner].resources;
  78 + for (var key in resources) {
  79 + if (resources.hasOwnProperty(key)) {
  80 + var resource = resources[key];
  81 + if (resources[key].state == 'online') {
  82 + return false;
  83 + }
  84 + }
  85 + }
  86 + logger.verbose('Offline partner detected: ' + partner);
  87 + return true;
  88 +}