Browse Source

Fixed go to same message

Close #1142
master
Igor Zhukov 8 years ago
parent
commit
984ebeae36
  1. 31
      app/js/controllers.js
  2. 28
      app/js/directives.js
  3. 2
      app/less/app.less

31
app/js/controllers.js

@ -440,7 +440,11 @@ angular.module('myApp.controllers', ['myApp.i18n']) @@ -440,7 +440,11 @@ angular.module('myApp.controllers', ['myApp.i18n'])
if (peerData.peerString == $scope.curDialog.peer &&
peerData.messageID == $scope.curDialog.messageID &&
!peerData.startParam) {
$scope.$broadcast(peerData.messageID ? 'ui_history_change_scroll' : 'ui_history_focus');
if (peerData.messageID) {
$scope.$broadcast('ui_history_change_scroll', true);
} else {
$scope.$broadcast('ui_history_focus');
}
} else {
var peerID = AppPeersManager.getPeerID(peerData.peerString);
var username = AppPeersManager.getPeer(peerID).username;
@ -1108,7 +1112,6 @@ angular.module('myApp.controllers', ['myApp.i18n']) @@ -1108,7 +1112,6 @@ angular.module('myApp.controllers', ['myApp.i18n'])
documents: 'inputMessagesFilterDocument',
audio: 'inputMessagesFilterVoice'
},
unfocusMessagePromise,
jump = 0,
moreJump = 0,
moreActive = false,
@ -1131,7 +1134,7 @@ angular.module('myApp.controllers', ['myApp.i18n']) @@ -1131,7 +1134,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
newDialog.messageID) {
messageFocusHistory();
}
else if (newDialog.peerID) {
else if (peerID) {
updateHistoryPeer(true);
loadHistory();
}
@ -1292,15 +1295,6 @@ angular.module('myApp.controllers', ['myApp.i18n']) @@ -1292,15 +1295,6 @@ angular.module('myApp.controllers', ['myApp.i18n'])
var focusedMsgID = $scope.curDialog.messageID || 0;
$scope.$broadcast('messages_focus', focusedMsgID);
$scope.$broadcast('ui_history_change_scroll', true);
$timeout.cancel(unfocusMessagePromise);
if (focusedMsgID) {
unfocusMessagePromise = $timeout(function () {
if ($scope.curDialog.messageID == focusedMsgID) {
$scope.$broadcast('messages_focus', 0);
}
}, 2800);
}
} else {
loadHistory();
}
@ -1442,10 +1436,10 @@ angular.module('myApp.controllers', ['myApp.i18n']) @@ -1442,10 +1436,10 @@ angular.module('myApp.controllers', ['myApp.i18n'])
$scope.state.mayBeHasMore = true;
// console.log(dT(), 'start load history', $scope.curDialog);
console.log(dT(), 'start load history', $scope.curDialog);
getMessagesPromise.then(function (historyResult) {
if (curJump != jump) return;
// console.log(dT(), 'history loaded', angular.copy(historyResult));
console.log(dT(), 'history loaded', angular.copy(historyResult));
var fetchedLength = historyResult.history.length;
@ -1494,15 +1488,6 @@ angular.module('myApp.controllers', ['myApp.i18n']) @@ -1494,15 +1488,6 @@ angular.module('myApp.controllers', ['myApp.i18n'])
});
$scope.$broadcast('ui_history_change');
$timeout.cancel(unfocusMessagePromise);
if (focusedMsgID) {
unfocusMessagePromise = $timeout(function () {
if ($scope.curDialog.messageID == focusedMsgID) {
$scope.$broadcast('messages_focus', 0);
}
}, 2800);
}
if (!$rootScope.idle.isIDLE) {
AppMessagesManager.readHistory($scope.curDialog.peerID);
}

28
app/js/directives.js

@ -1169,9 +1169,11 @@ angular.module('myApp.directives', ['myApp.filters']) @@ -1169,9 +1169,11 @@ angular.module('myApp.directives', ['myApp.filters'])
var unreadSplit, focusMessage;
var newScrollTop = false;
// console.trace('change scroll');
var afterScrollAdd;
// console.trace(dT(), 'change scroll', animated);
if (!noFocus &&
(focusMessage = $('.im_message_focus:visible', scrollableWrap)[0])) {
// console.log(dT(), 'change scroll to focus', focusMessage);
var ch = scrollableWrap.clientHeight,
st = scrollableWrap.scrollTop,
ot = focusMessage.offsetTop,
@ -1180,12 +1182,29 @@ angular.module('myApp.directives', ['myApp.filters']) @@ -1180,12 +1182,29 @@ angular.module('myApp.directives', ['myApp.filters'])
newScrollTop = Math.max(0, ot - Math.floor(ch / 2) + 26);
}
atBottom = false;
afterScrollAdd = function () {
var unfocusMessagePromise = $(focusMessage).data('unfocus_promise');
if (unfocusMessagePromise) {
$timeout.cancel(unfocusMessagePromise);
$(focusMessage).removeClass('im_message_focus_active');
}
$timeout(function () {
$(focusMessage).addClass('im_message_focus_active');
unfocusMessagePromise = $timeout(function () {
$(focusMessage).removeClass('im_message_focus_active');
$(focusMessage).data('unfocus_promise', false);
}, 2800);
$(focusMessage).data('unfocus_promise', unfocusMessagePromise);
});
}
} else if (unreadSplit = $('.im_message_unread_split:visible', scrollableWrap)[0]) {
// console.log('change scroll unread', unreadSplit.offsetTop);
// console.log(dT(), 'change scroll unread', unreadSplit.offsetTop);
newScrollTop = Math.max(0, unreadSplit.offsetTop - 52);
atBottom = false;
} else {
// console.log('change scroll bottom');
// console.log(dT(), 'change scroll bottom');
newScrollTop = scrollableWrap.scrollHeight;
atBottom = true;
}
@ -1196,6 +1215,9 @@ angular.module('myApp.directives', ['myApp.filters']) @@ -1196,6 +1215,9 @@ angular.module('myApp.directives', ['myApp.filters'])
$(scrollableWrap).trigger('scroll');
scrollTopInitial = scrollableWrap.scrollTop;
});
if (afterScrollAdd) {
afterScrollAdd();
}
}
if (animated) {
$(scrollableWrap).animate({scrollTop: newScrollTop}, 200, afterScroll);

2
app/less/app.less

@ -3878,7 +3878,7 @@ ul.chat_modal_migrate_list { @@ -3878,7 +3878,7 @@ ul.chat_modal_migrate_list {
}
}
.im_message_focus {
.im_message_focus_active {
.im_message_date,
.im_message_document_size,
.audio_player_duration,

Loading…
Cancel
Save