diff --git a/app/js/directives.js b/app/js/directives.js index 8af4a07f..a5ece163 100644 --- a/app/js/directives.js +++ b/app/js/directives.js @@ -1445,7 +1445,6 @@ angular.module('myApp.directives', ['myApp.filters']) function link($scope, element, attrs) { - console.log(dT(), 'bg', attrs.myCustomBackground); $('html').css({background: attrs.myCustomBackground}); $scope.$on('$destroy', function () { @@ -1603,14 +1602,25 @@ angular.module('myApp.directives', ['myApp.filters']) .directive('myUserStatus', function ($filter, $rootScope, AppUsersManager) { - var statusFilter = $filter('userStatus'); + var statusFilter = $filter('userStatus'), + ind = 0, + statuses = {}; + + setInterval(updateAll, 90000); return { link: link }; + function updateAll () { + angular.forEach(statuses, function (update) { + update(); + }); + } + function link($scope, element, attrs) { var userID, + curInd = ind++, update = function () { var user = AppUsersManager.getUser(userID); element @@ -1627,6 +1637,10 @@ angular.module('myApp.directives', ['myApp.filters']) update(); } }); + statuses[curInd] = update; + $scope.$on('$destroy', function () { + delete statuses[curInd]; + }); } }) diff --git a/app/js/services.js b/app/js/services.js index fae0d73b..32df720f 100644 --- a/app/js/services.js +++ b/app/js/services.js @@ -11,12 +11,19 @@ angular.module('myApp.services', []) -.service('AppUsersManager', function ($rootScope, $modal, $modalStack, $filter, $q, MtpApiFileManager, MtpApiManager, RichTextProcessor, SearchIndexManager, ErrorService) { +.service('AppUsersManager', function ($rootScope, $modal, $modalStack, $filter, $q, MtpApiFileManager, MtpApiManager, RichTextProcessor, SearchIndexManager, ErrorService, Storage) { var users = {}, cachedPhotoLocations = {}, contactsFillPromise, contactsList, - contactsIndex = SearchIndexManager.createIndex(); + contactsIndex = SearchIndexManager.createIndex(), + serverTimeOffset = 0; + + Storage.get('server_time_offset').then(function (to) { + if (to) { + serverTimeOffset = to; + } + }); function fillContacts () { if (contactsFillPromise) { @@ -152,6 +159,17 @@ angular.module('myApp.services', []) }; } + function updateUsersStatuses () { + var timestampNow = tsNow(true) + serverTimeOffset; + angular.forEach(users, function (user) { + if (user.status && user.status._ == 'userStatusOnline' && + user.status.expires > timestampNow) { + user.status = {_: 'userStatusOffline', was_online: user.status.expires}; + $rootScope.$broadcast('user_update', user.id); + } + }); + } + function wrapForFull (id) { var user = getUser(id); @@ -309,6 +327,8 @@ angular.module('myApp.services', []) } }); + setInterval(updateUsersStatuses, 60000); + return { getContacts: getContacts, @@ -3768,7 +3788,6 @@ var regexAlphaNumericChars = "0-9\.\_" + regexAlphaChars; if (typeof ver2 !== 'string') { ver2 = ''; } - // console.log('ss', ver1, ver2); ver1 = ver1.replace(/^\s+|\s+$/g, '').split('.'); ver2 = ver2.replace(/^\s+|\s+$/g, '').split('.');