diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2012-04-07 00:40:00 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2012-04-07 00:44:42 -0400 |
| commit | b78615962784bcbb9bfb4cab161bd3439996f0c9 (patch) | |
| tree | 0d552d8f3f56dc4f47192e5a6879184cf25c4f48 /alias-angular | |
| parent | 8a83f72870bd4a291fdcf78d5ac17727b0a7618b (diff) | |
| download | alias-b78615962784bcbb9bfb4cab161bd3439996f0c9.tar.gz | |
load the presence
Diffstat (limited to 'alias-angular')
| -rw-r--r-- | alias-angular/app/index.html | 3 | ||||
| -rw-r--r-- | alias-angular/app/js/controllers.js | 36 | ||||
| -rw-r--r-- | alias-angular/app/js/services.js | 25 |
3 files changed, 52 insertions, 12 deletions
diff --git a/alias-angular/app/index.html b/alias-angular/app/index.html index 528c754..305a456 100644 --- a/alias-angular/app/index.html +++ b/alias-angular/app/index.html @@ -14,10 +14,11 @@ <div id="roster" ng-controller="RosterCtl"> <ul> - <li ng-repeat="contact in contacts">{{contact}}</li> + <li ng-repeat="(key,value) in contacts">{{key}}</li> </ul> </div> <script src="lib/angular/angular.js"></script> + <script src="lib/jquery-1.7.2.min.js"></script> <script src="lib/config.js"></script> <script src="js/alias.js"></script> <script src="lib/strophe.js"></script> diff --git a/alias-angular/app/js/controllers.js b/alias-angular/app/js/controllers.js index 97b44ee..2040e3a 100644 --- a/alias-angular/app/js/controllers.js +++ b/alias-angular/app/js/controllers.js @@ -24,17 +24,44 @@ function ConnectCtl($scope, StropheSrv, $log, $rootScope) { ConnectCtl.$inject = ['$scope', 'StropheSrv', '$log', '$rootScope']; function RosterCtl($scope, StropheSrv, $log) { - $scope.contacts = []; + $scope.contacts = {}; function onRoster(iq) { + $log.log('im here'); var elems = iq.getElementsByTagName('query'); var query = elems[0]; Strophe.forEachChild(query, 'item', function(item){ var jid = item.getAttribute('jid'); - var name = item.getAttribute('name') || jid; - $scope.contacts.push(name); + var name = item.getAttribute('name'); + $scope.contacts[jid]={name: name}; }); }; - $scope.$on('connected', function() {$scope.getRoster();}); + function onPresence(presence) { + var who = $(presence).attr('from'); + var jid = Strophe.getBareJidFromJid(who); + $log.log(jid); + var type = $(presence).attr('type'); + if (type !== 'error') { + if (type === 'unavailable') { + $scope.contacts[jid]['status']='offline'; + } + else { + var show = $(presence).find('show').text(); + if (show === '') { + $scope.contacts[jid]['status'] = 'online'; + }else{ + $scope.contacts[jid]['status'] = 'away'; + } + } + delete $scope.contacts[jid]; + } + return true; + } + $scope.$on('connected', function() { + StropheSrv.addHandler(onPresence, 'presence'); + $log.log('test'); + $scope.getRoster(); + StropheSrv.send($pres()); + }); $scope.getRoster = function () { var query = $iq({type : 'get'}).c('query', {xmlns : Strophe.NS.ROSTER}); StropheSrv.sendIQ(query, onRoster); @@ -42,3 +69,4 @@ function RosterCtl($scope, StropheSrv, $log) { } RosterCtl.$inject = ['$scope','StropheSrv','$log']; + diff --git a/alias-angular/app/js/services.js b/alias-angular/app/js/services.js index 98bff5e..091a4fa 100644 --- a/alias-angular/app/js/services.js +++ b/alias-angular/app/js/services.js @@ -4,12 +4,23 @@ angular.module('Alias.services', [], function($provide) { $provide.factory('StropheSrv', ['$log', '$rootScope', function($log, $rootScope) { var connection = new Strophe.Connection(BOSH_SERVICE); - return {login: function(name, password, connect_callback) { - connection.connect(name, password, connect_callback); - }, - sendIQ: function(query, callback) { - connection.sendIQ(query, function(data){ - $rootScope.$apply(callback(data));}); - }}; + return { + login: function(name, password, connect_callback) { + connection.connect(name, password, connect_callback); + }, + sendIQ: function(query, callback) { + connection.sendIQ(query, function (data) { + $rootScope.$apply(callback(data)); + }); + }, + addHandler: function(callback, name) { + connection.addHandler(function(stanza){ + $rootScope.$apply(callback(stanza)); + }, null, name, null, null, null, null); + }, + send: function(stanza) { + $rootScope.$apply(connection.send(stanza)); + } + }; }]); });
\ No newline at end of file |
