diff options
Diffstat (limited to 'alias-angular/app/js/controllers.js')
| -rw-r--r-- | alias-angular/app/js/controllers.js | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/alias-angular/app/js/controllers.js b/alias-angular/app/js/controllers.js index 909754e..33feb0d 100644 --- a/alias-angular/app/js/controllers.js +++ b/alias-angular/app/js/controllers.js @@ -2,7 +2,9 @@ /* App Controllers */ function ConnectCtl($scope, StropheSrv, $log, $rootScope) { - $rootScope.username = $scope.username; + $rootScope.self = {jid: "", + status: 'offline' + }; $rootScope.is_connected = function () { return $rootScope.status == Strophe.Status.CONNECTED; }; @@ -28,6 +30,7 @@ function ConnectCtl($scope, StropheSrv, $log, $rootScope) { }; $scope.login = function () { StropheSrv.login($scope.username, $scope.password, connect_callback); + $rootScope.self["jid"] = $scope.username; }; $scope.disconnect = function() { StropheSrv.disconnect(); @@ -41,6 +44,7 @@ function RosterCtl($scope, StropheSrv, $log, $rootScope) { $scope.get_contacts = function() { return _.toArray($scope.contacts); }; + function onRoster(iq) { var elems = iq.getElementsByTagName('query'); var query = elems[0]; @@ -52,6 +56,7 @@ function RosterCtl($scope, StropheSrv, $log, $rootScope) { }); //make sure the roster is populated before sending presence request StropheSrv.send($pres()); + $rootScope.self["status"] = "chat"; }; function onPresence(presence) { @@ -60,17 +65,16 @@ function RosterCtl($scope, StropheSrv, $log, $rootScope) { var type = $(presence).attr('type'); // if (jid in $scope.contacts) { if(_.has($scope.contacts, jid)){ + var contact = $scope.contacts[jid]; if (type !== 'error') { if (type === 'unavailable') { - $log.log(jid +' is offline'); - $scope.contacts[jid]['status'] = 'offline'; - }else{ - var show = $(presence).find('show').text(); - if (show === '') { - $scope.contacts[jid]['status'] = 'online'; - }else{ - $log.log(jid +' is away'); - $scope.contacts[jid]['status'] = 'away'; + contact['status'] = 'offline'; + } else { + var show = $(presence).find('show'); + if (show.length) { + contact['status'] = show.text(); + } else { + contact['status'] = 'chat'; } } } @@ -90,6 +94,13 @@ function RosterCtl($scope, StropheSrv, $log, $rootScope) { $scope.chatWith = function(contact) { $rootScope.$broadcast('msgrequest', contact.name||contact.jid); }; + + $scope.status = function(status) { + var pres = $pres().c("show",{},status); + StropheSrv.send(pres); + $rootScope.self["status"] = status; + }; + } RosterCtl.$inject = ['$scope','StropheSrv','$log', '$rootScope']; |
