From 5a405d10f97ff50edc92ff4182fe6a685e231428 Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Sat, 14 Feb 2015 23:17:20 +0300 Subject: [PATCH] Improved unread after idle logic --- app/js/controllers.js | 10 +++++++++- app/js/directives.js | 5 ++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/js/controllers.js b/app/js/controllers.js index 6ebcba04..32228de1 100644 --- a/app/js/controllers.js +++ b/app/js/controllers.js @@ -890,6 +890,7 @@ angular.module('myApp.controllers', ['myApp.i18n']) var peerID, peerHistory = false, + unreadAfterIdle = false, hasMore = false, hasLess = false, maxID = 0, @@ -1393,7 +1394,10 @@ angular.module('myApp.controllers', ['myApp.i18n']) if (curPeer) { $scope.historyState.typing.splice(0, $scope.historyState.typing.length); - $scope.$broadcast('ui_history_append_new', {my: addedMessage.my, idle: $rootScope.idle.isIDLE}); + $scope.$broadcast('ui_history_append_new', { + my: addedMessage.my, + noScroll: unreadAfterIdle && !historyMessage.out && $rootScope.idle.isIDLE + }); if (addedMessage.my && $scope.historyUnreadAfter) { delete $scope.historyUnreadAfter; $scope.$broadcast('messages_unread_after'); @@ -1406,6 +1410,7 @@ angular.module('myApp.controllers', ['myApp.i18n']) !(history.messages[history.messages.length - 2] || {}).unread) { $scope.historyUnreadAfter = historyMessage.id; + unreadAfterIdle = true; $scope.$broadcast('messages_unread_after'); } } else { @@ -1486,6 +1491,9 @@ angular.module('myApp.controllers', ['myApp.i18n']) if (!newVal && $scope.curDialog && $scope.curDialog.peerID && !$scope.historyFilter.mediaType && !$scope.skippedHistory) { AppMessagesManager.readHistory($scope.curDialog.inputPeer); } + if (!newVal) { + unreadAfterIdle = false; + } }); }) diff --git a/app/js/directives.js b/app/js/directives.js index 00ec3866..132f1e5f 100755 --- a/app/js/directives.js +++ b/app/js/directives.js @@ -800,7 +800,10 @@ angular.module('myApp.directives', ['myApp.filters']) curAnimation = false; $scope.$on('ui_history_append_new', function (e, options) { - if ((!atBottom || options.idle) && !options.my) { + if (!atBottom && !options.my || options.noScroll) { + onContentLoaded(function () { + $(historyWrap).nanoScroller(); + }) return; } var curAnimated = animated &&