diff --git a/adaptor-xmpp.js b/adaptor-xmpp.js index 49ece0a..8b7e0d2 100644 --- a/adaptor-xmpp.js +++ b/adaptor-xmpp.js @@ -61,7 +61,7 @@ function onUnsubscribe(sender) { function onBuddy(jid, state, statusText, resource) { if (jid == 'undefined') {return; } - + logger.verbose('Buddy state change', {jid: jid, state: state, statusText: statusText, resource: resource}); if (!matrix) { @@ -86,6 +86,10 @@ function onBuddy(jid, state, statusText, resource) { function isPartnerOffline(partner) { if (!matrix) { return false; } + if (!isAFriend(partner)) { + addFriend(partner); + } + if (!matrix.buddies[partner]) { return false; } if (!matrix.buddies[partner].resources) { return false; }; @@ -164,7 +168,15 @@ function sendMessage(destination, msg) { } function addFriend(friend) { - xmpp.subscribe(friend); + xmpp.subscribe(friend); +} + +function isAFriend(jid) { + if (!matrix) { return false; }; + if (!matrix.buddies) { return false; } + if (!matrix.buddies[jid]) { return false; } + + return true; } exports.init = init; @@ -172,3 +184,4 @@ exports.sendMessage = sendMessage; exports.setOptions = setOptions; exports.addFriend = addFriend; exports.isPartnerOffline = isPartnerOffline; +exports.isAFriend = isAFriend;