aboutsummaryrefslogtreecommitdiffstats
path: root/alias-angular/app/js/controllers.js
diff options
context:
space:
mode:
Diffstat (limited to 'alias-angular/app/js/controllers.js')
-rw-r--r--alias-angular/app/js/controllers.js31
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'];