From 1653400c2f2e8dc941b2f1e81eebeb2587ca2d22 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Wed, 4 Oct 2017 21:10:57 +0100 Subject: [PATCH] mediawiki.notification: Refactor $.ready handler and init() * Merge code from $.ready handler into init(). This makes it more obvious in which order the code runs, and makes it easier to make perf fixes in the next commit. * Move updateAreaMode() to the start of the init() function. Change-Id: I088446e17c2dc8ed88742bfeae80352444126e88 --- .../src/mediawiki/mediawiki.notification.js | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/resources/src/mediawiki/mediawiki.notification.js b/resources/src/mediawiki/mediawiki.notification.js index c213cd2df4..d5289bd9d7 100644 --- a/resources/src/mediawiki/mediawiki.notification.js +++ b/resources/src/mediawiki/mediawiki.notification.js @@ -266,9 +266,21 @@ * @ignore */ function init() { - var offset, + var offset, notif, isFloating = false; + function updateAreaMode() { + var shouldFloat = window.pageYOffset > offset.top; + if ( isFloating === shouldFloat ) { + return; + } + isFloating = shouldFloat; + $area + .toggleClass( 'mw-notification-area-floating', isFloating ) + .toggleClass( 'mw-notification-area-layout', !isFloating ); + } + + // Prepend the notification area to the content area and save its object. $area = $( '
' ) // Pause auto-hide timers when the mouse is in the notification area. .on( { @@ -288,26 +300,21 @@ e.stopPropagation(); } ); - // Prepend the notification area to the content area and save it's object. mw.util.$content.prepend( $area ); offset = $area.offset(); $area.css( 'display', 'none' ); - function updateAreaMode() { - var shouldFloat = window.pageYOffset > offset.top; - if ( isFloating === shouldFloat ) { - return; - } - isFloating = shouldFloat; - $area - .toggleClass( 'mw-notification-area-floating', isFloating ) - .toggleClass( 'mw-notification-area-layout', !isFloating ); - } - $( window ).on( 'scroll', updateAreaMode ); // Initial mode updateAreaMode(); + + // Handle pre-ready queue. + isPageReady = true; + while ( preReadyNotifQueue.length ) { + notif = preReadyNotifQueue.shift(); + notif.start(); + } } /** @@ -423,18 +430,7 @@ autoHideLimit: 3 }; - $( function () { - var notif; - - init(); - - // Handle pre-ready queue. - isPageReady = true; - while ( preReadyNotifQueue.length ) { - notif = preReadyNotifQueue.shift(); - notif.start(); - } - } ); + $( init ); mw.notification = notification; -- 2.20.1