diff --git a/app/js/controllers.js b/app/js/controllers.js index 04924c74..0cce23e5 100644 --- a/app/js/controllers.js +++ b/app/js/controllers.js @@ -783,7 +783,11 @@ angular.module('myApp.controllers', []) $scope.history = []; angular.forEach(historyResult.history, function (id) { - $scope.history.push(AppMessagesManager.wrapForHistory(id)); + var message = AppMessagesManager.wrapForHistory(id); + if ($scope.skippedHistory) { + delete message.unread; + } + $scope.history.push(message); }); $scope.history.reverse(); @@ -1046,7 +1050,7 @@ angular.module('myApp.controllers', []) $scope.$on('history_need_more', showMoreHistory); $rootScope.$watch('idle.isIDLE', function (newVal) { - if (!newVal && $scope.curDialog && $scope.curDialog.peerID) { + if (!newVal && $scope.curDialog && $scope.curDialog.peerID && !$scope.mediaType && !$scope.skippedHistory) { AppMessagesManager.readHistory($scope.curDialog.inputPeer); } }); @@ -1130,7 +1134,9 @@ angular.module('myApp.controllers', []) // console.trace('ctrl text changed', newVal); if (newVal && newVal.length) { - AppMessagesManager.readHistory($scope.curDialog.inputPeer); + if (!$scope.mediaType && !$scope.skippedHistory) { + AppMessagesManager.readHistory($scope.curDialog.inputPeer); + } var backupDraftObj = {}; backupDraftObj['draft' + $scope.curDialog.peerID] = newVal; diff --git a/app/js/services.js b/app/js/services.js index 1d7efc30..abc0fbee 100644 --- a/app/js/services.js +++ b/app/js/services.js @@ -1182,7 +1182,11 @@ angular.module('myApp.services', []) } function processAffectedHistory (inputPeer, affectedHistory, method) { - if (!ApiUpdatesManager.saveSeq(affectedHistory.seq)) { + if (!ApiUpdatesManager.processUpdateMessage({ + _: 'updates', + seq: affectedHistory.seq, + updates: [] + })) { return false; } if (!affectedHistory.offset) { @@ -2845,9 +2849,13 @@ angular.module('myApp.services', []) pendingUpdates = {}; function popPendingUpdate () { - var updateMessage = pendingUpdates[curState.seq + 1]; - if (updateMessage && processUpdateMessage(updateMessage)) { - delete pendingUpdates[curState.seq + 1]; + var nextSeq = curState.seq + 1, + updateMessage = pendingUpdates[nextSeq]; + if (updateMessage) { + console.log(dT(), 'pop pending update', nextSeq, updateMessage); + if (processUpdateMessage(updateMessage)) { + delete pendingUpdates[nextSeq]; + } } } @@ -2961,6 +2969,7 @@ angular.module('myApp.services', []) popPendingUpdate(); if (getDifferencePending && curState.seq >= getDifferencePending.seqAwaiting) { + console.log(dT(), 'cancel pending getDiff', getDifferencePending.seqAwaiting); clearTimeout(getDifferencePending.timeout); getDifferencePending = false; } @@ -2978,6 +2987,7 @@ angular.module('myApp.services', []) MtpApiManager.invokeApi('updates.getDifference', {pts: curState.pts, date: curState.date, qts: 0}).then(function (differenceResult) { if (differenceResult._ == 'updates.differenceEmpty') { + console.log(dT(), 'apply empty diff', differenceResult.seq); curState.date = differenceResult.date; curState.seq = differenceResult.seq; isSynchronizing = false; @@ -3006,6 +3016,8 @@ angular.module('myApp.services', []) curState.pts = nextState.pts; curState.date = nextState.date; + console.log(dT(), 'apply diff', curState.seq, curState.pts); + if (differenceResult._ == 'updates.differenceSlice') { getDifference(true); } else { @@ -3025,7 +3037,6 @@ angular.module('myApp.services', []) function saveSeq (seq, seqStart) { - // console.log('saving seq', curState.invalid, seq, seqStart, curState.seq); seqStart = seqStart || seq; if (!seqStart) { @@ -3033,12 +3044,13 @@ angular.module('myApp.services', []) } if (isSynchronizing) { + console.log(dT(), 'Seq decline', seqStart); return false; } if (seqStart != curState.seq + 1) { if (seqStart > curState.seq) { - console.warn('Seq hole', seqStart, curState.seq); + console.warn(dT(), 'Seq hole', seqStart, getDifferencePending && getDifferencePending.seqAwaiting); if (!getDifferencePending) { getDifferencePending = { seqAwaiting: seqStart, @@ -3049,6 +3061,8 @@ angular.module('myApp.services', []) } } return false; + } else { + console.log(dT(), 'Seq apply', seqStart); } curState.seq = seq; @@ -3069,7 +3083,6 @@ angular.module('myApp.services', []) return { processUpdateMessage: processUpdateMessage, - saveSeq: saveSeq, attach: attach } })