diff --git a/app/js/messages_manager.js b/app/js/messages_manager.js index ec90d13a..09badfe6 100644 --- a/app/js/messages_manager.js +++ b/app/js/messages_manager.js @@ -35,11 +35,12 @@ angular.module('myApp.services') var incrementMessageViewsTimeout = false var maxSeenID = false - if (Config.Modes.packed) { - Storage.get('max_seen_msg').then(function (maxID) { - maxSeenID = maxID || 0 - }) - } + Storage.get('max_seen_msg').then(function (maxID) { + if (maxID && + !AppMessagesIDsManager.getMessageIDInfo(maxID)[1]) { + maxSeenID = maxID + } + }) var dateOrTimeFilter = $filter('dateOrTime') var fwdMessagesPluralize = _.pluralize('conversation_forwarded_X_messages') @@ -190,21 +191,21 @@ angular.module('myApp.services') } if ( + Config.Modes.packed && !channelID && dialog.unread_count > 0 && maxSeenID && - dialog.top_message > maxSeenID + dialog.top_message > maxSeenID && + message.pFlags.unread && + !message.pFlags.out && + !message.pFlags.silent ) { var notifyPeer = message.flags & 16 ? message.from_id : peerID - if (message.pFlags.unread && - !message.pFlags.out && - !message.pFlags.silent) { - NotificationsManager.getPeerMuted(notifyPeer).then(function (muted) { - if (!muted) { - notifyAboutMessage(message) - } - }) - } + NotificationsManager.getPeerMuted(notifyPeer).then(function (muted) { + if (!muted) { + notifyAboutMessage(message) + } + }) } } @@ -245,7 +246,7 @@ angular.module('myApp.services') } if (!maxSeenIdIncremented && - !AppPeersManager.isChannel(AppPeersManager.getPeerID(dialog.peer))) { + !AppPeersManager.isChannel(AppPeersManager.getPeerID(dialog.peer))) { incrementMaxSeenID(dialog.top_message) maxSeenIdIncremented = true } @@ -2595,11 +2596,15 @@ angular.module('myApp.services') } function incrementMaxSeenID (maxID) { - if (maxSeenID !== false && maxID && maxID > maxSeenID) { - Storage.set({ - max_seen_msg: maxID - }) + if (!maxID || !(!maxSeenID || maxID > maxSeenID)) { + return false } + Storage.set({ + max_seen_msg: maxID + }) + MtpApiManager.invokeApi('messages.receivedMessages', { + max_id: maxID + }) } function notifyAboutMessage (message, options) { @@ -2945,8 +2950,8 @@ angular.module('myApp.services') } if (inboxUnread && - ($rootScope.selectedPeerID != peerID || $rootScope.idle.isIDLE) && - !message.pFlags.silent) { + ($rootScope.selectedPeerID != peerID || $rootScope.idle.isIDLE) && + !message.pFlags.silent) { var notifyPeer = message.flags & 16 ? message.from_id : peerID var notifyPeerToHandle = notificationsToHandle[notifyPeer] if (notifyPeerToHandle === undefined) { @@ -2972,7 +2977,9 @@ angular.module('myApp.services') } } - incrementMaxSeenID(message.id) + if (!AppPeersManager.isChannel(peerID)) { + incrementMaxSeenID(message.id) + } break case 'updateEditMessage':