aboutsummaryrefslogtreecommitdiffstats
path: root/alias-angular/app/js
diff options
context:
space:
mode:
Diffstat (limited to 'alias-angular/app/js')
-rw-r--r--alias-angular/app/js/controllers.js31
-rw-r--r--alias-angular/app/js/directives.js8
-rw-r--r--alias-angular/app/js/filters.js15
3 files changed, 44 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'];
diff --git a/alias-angular/app/js/directives.js b/alias-angular/app/js/directives.js
index 3b9b652..cb7e70d 100644
--- a/alias-angular/app/js/directives.js
+++ b/alias-angular/app/js/directives.js
@@ -28,4 +28,12 @@ angular.module('Alias.directives', []).
}
};
return directiveDefinition;
+ }).directive('dropdownToggle', function($log) {
+ var directiveDefinition = {
+ restrict: 'A',
+ link: function(scope, elm, attrs) {
+ elm.dropdown();
+ }
+ };
+ return directiveDefinition;
});
diff --git a/alias-angular/app/js/filters.js b/alias-angular/app/js/filters.js
index 772e523..70bd074 100644
--- a/alias-angular/app/js/filters.js
+++ b/alias-angular/app/js/filters.js
@@ -25,4 +25,19 @@ angular.module('Alias.filters', []).
});
};
};
+ }).filter('formatStatus',function() {
+ return function(status) {
+ switch(status) {
+ case "chat":
+ return "Online";
+ case "away":
+ return "Away";
+ case "xa":
+ return "Extended Away";
+ case "dnd":
+ return "Do Not Disturb";
+ case "offline":
+ return "Offline";
+ }
+ };
}); \ No newline at end of file