Mooeypoo has uploaded a new change for review. https://gerrit.wikimedia.org/r/310698
Change subject: Update the badges' seen state when Special:Notifications is visited ...................................................................... Update the badges' seen state when Special:Notifications is visited The special page and badges are completely different 'modules' so their data models are disconnected. We do, however, want to make sure that the badges' colors are updated when the special page is loaded. We could tell the back end to never render the color of the badge when we visit the special page, but that isn't consistent with our update of seenTime, because there could be cases where the user loaded the special page and moved away (or had a fluke API issue) which means that the seenTime (and seen state in general) was *not* updated. We should represent this state when it is actually updated. Bug: T134855 Change-Id: I053ce07ca26a858fd42c9d070b7dce73cc161e4b --- M modules/ext.echo.init.js M modules/ui/mw.echo.ui.NotificationsInboxWidget.js 2 files changed, 28 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Echo refs/changes/98/310698/1 diff --git a/modules/ext.echo.init.js b/modules/ext.echo.init.js index f563f5d..70e1781 100644 --- a/modules/ext.echo.init.js +++ b/modules/ext.echo.init.js @@ -22,8 +22,6 @@ numMessages = $existingMessageLink.attr( 'data-counter-num' ), badgeLabelAlerts = $existingAlertLink.attr( 'data-counter-text' ), badgeLabelMessages = $existingMessageLink.attr( 'data-counter-text' ), - hasUnseenAlerts = $existingAlertLink.hasClass( 'mw-echo-unseen-notifications' ), - hasUnseenMessages = $existingMessageLink.hasClass( 'mw-echo-unseen-notifications' ), // Store links links = { notifications: $( '#pt-notifications-alert a' ).attr( 'href' ), @@ -33,7 +31,9 @@ // Respond to click on the notification button and load the UI on demand $( '.mw-echo-notification-badge-nojs' ).click( function ( e ) { var time = mw.now(), - myType = $( this ).parent().prop( 'id' ) === 'pt-notifications-alert' ? 'alert' : 'message'; + myType = $( this ).parent().prop( 'id' ) === 'pt-notifications-alert' ? 'alert' : 'message', + hasUnseenAlerts = $existingAlertLink.hasClass( 'mw-echo-unseen-notifications' ), + hasUnseenMessages = $existingMessageLink.hasClass( 'mw-echo-unseen-notifications' ); if ( e.which !== 1 ) { return; diff --git a/modules/ui/mw.echo.ui.NotificationsInboxWidget.js b/modules/ui/mw.echo.ui.NotificationsInboxWidget.js index d46f72d..dfdf633 100644 --- a/modules/ui/mw.echo.ui.NotificationsInboxWidget.js +++ b/modules/ui/mw.echo.ui.NotificationsInboxWidget.js @@ -262,10 +262,35 @@ widget.displayMessage( true ); } ) + .then( this.makePopupBadgesSeen.bind( this ) ) .always( this.popPending.bind( this ) ); }; /** + * Look for the echo popup badges and update their seen states + * If they are already loaded, trigger an update to their data-model's seentime, + * if they are not yet loaded, remove the 'unseen' classes that specify their + * unseen state. + */ + mw.echo.ui.NotificationsInboxWidget.prototype.makePopupBadgesSeen = function () { + if ( mw.echo.ui.messageWidget ) { + // This means the badge JS is already loaded + mw.echo.ui.messageWidget.controller.updateSeenTime(); + } else { + // Hijack the DOM and change the state + $( '#pt-notifications-notice a' ).removeClass( 'mw-echo-unseen-notifications' ); + } + + if ( mw.echo.ui.alertWidget ) { + // This means the badge JS is already loaded + mw.echo.ui.alertWidget.controller.updateSeenTime(); + } else { + // Hijack the DOM and change the state + $( '#pt-notifications-alert a' ).removeClass( 'mw-echo-unseen-notifications' ); + } + }; + + /** * Extend the pushPending method to disable UI elements */ mw.echo.ui.NotificationsInboxWidget.prototype.pushPending = function () { -- To view, visit https://gerrit.wikimedia.org/r/310698 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I053ce07ca26a858fd42c9d070b7dce73cc161e4b Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Echo Gerrit-Branch: master Gerrit-Owner: Mooeypoo <mor...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits