Jhernandez has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/337819 )

Change subject: Hygiene: Remove unnecessary IIFE in actions.js
......................................................................

Hygiene: Remove unnecessary IIFE in actions.js

Change-Id: I6031efbce04d4cd91a37690469d49ffd0372b41c
---
M src/actions.js
1 file changed, 287 insertions(+), 289 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Popups 
refs/changes/19/337819/1

diff --git a/src/actions.js b/src/actions.js
index 8a356f6..6a5bb1b 100644
--- a/src/actions.js
+++ b/src/actions.js
@@ -1,311 +1,309 @@
-( function ( mw, $ ) {
+var mw = window.mediaWiki,
+       actions = {},
+       types = require( './actionTypes' ),
+       wait = require( './wait' ),
+       FETCH_START_DELAY = 50, // ms.
 
-       var actions = {},
-               types = require( './actionTypes' ),
-               FETCH_START_DELAY = 50, // ms.
+       // The delay after which a FETCH_END action should be dispatched.
+       //
+       // If the API endpoint responds faster than 500 ms (or, say, the API
+       // response is served from the UA's cache), then we introduce a delay of
+       // 300 - t to make the preview delay consistent to the user.
+       FETCH_END_TARGET_DELAY = 500, // ms.
 
-               // The delay after which a FETCH_END action should be 
dispatched.
-               //
-               // If the API endpoint responds faster than 500 ms (or, say, 
the API
-               // response is served from the UA's cache), then we introduce a 
delay of
-               // 300 - t to make the preview delay consistent to the user.
-               FETCH_END_TARGET_DELAY = 500, // ms.
+       ABANDON_END_DELAY = 300; // ms.
 
-               ABANDON_END_DELAY = 300; // ms.
+/**
+ * Mixes in timing information to an action.
+ *
+ * Warning: the `baseAction` parameter is modified and returned.
+ *
+ * @param {Object} baseAction
+ * @return {Object}
+ */
+function timedAction( baseAction ) {
+       baseAction.timestamp = mw.now();
 
-       /**
-        * Mixes in timing information to an action.
-        *
-        * Warning: the `baseAction` parameter is modified and returned.
-        *
-        * @param {Object} baseAction
-        * @return {Object}
-        */
-       function timedAction( baseAction ) {
-               baseAction.timestamp = mw.now();
+       return baseAction;
+}
 
-               return baseAction;
-       }
+/**
+ * Represents Page Previews booting.
+ *
+ * When a Redux store is created, the `@@INIT` action is immediately
+ * dispatched to it. To avoid overriding the term, we refer to booting rather
+ * than initializing.
+ *
+ * Page Previews persists critical pieces of information to local storage.
+ * Since reading from and writing to local storage are synchronous, Page
+ * Previews is booted when the browser is idle (using
+ * 
[`mw.requestIdleCallback`](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback))
+ * so as not to impact latency-critical events.
+ *
+ * @param {Boolean} isEnabled See `mw.popups.isEnabled`
+ * @param {mw.user} user
+ * @param {ext.popups.UserSettings} userSettings
+ * @param {Function} generateToken
+ * @param {mw.Map} config The config of the MediaWiki client-side application,
+ *  i.e. `mw.config`
+ * @returns {Object}
+ */
+actions.boot = function (
+       isEnabled,
+       user,
+       userSettings,
+       generateToken,
+       config
+) {
+       var editCount = config.get( 'wgUserEditCount' ),
+               previewCount = userSettings.getPreviewCount();
 
-       /**
-        * Represents Page Previews booting.
-        *
-        * When a Redux store is created, the `@@INIT` action is immediately
-        * dispatched to it. To avoid overriding the term, we refer to booting 
rather
-        * than initializing.
-        *
-        * Page Previews persists critical pieces of information to local 
storage.
-        * Since reading from and writing to local storage are synchronous, Page
-        * Previews is booted when the browser is idle (using
-        * 
[`mw.requestIdleCallback`](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback))
-        * so as not to impact latency-critical events.
-        *
-        * @param {Boolean} isEnabled See `mw.popups.isEnabled`
-        * @param {mw.user} user
-        * @param {ext.popups.UserSettings} userSettings
-        * @param {Function} generateToken
-        * @param {mw.Map} config The config of the MediaWiki client-side 
application,
-        *  i.e. `mw.config`
-        * @returns {Object}
-        */
-       actions.boot = function (
-               isEnabled,
-               user,
-               userSettings,
-               generateToken,
-               config
-       ) {
-               var editCount = config.get( 'wgUserEditCount' ),
-                       previewCount = userSettings.getPreviewCount();
-
-               return {
-                       type: types.BOOT,
-                       isEnabled: isEnabled,
-                       isNavPopupsEnabled: config.get( 
'wgPopupsConflictsWithNavPopupGadget' ),
-                       sessionToken: user.sessionId(),
-                       pageToken: generateToken(),
-                       page: {
-                               title: config.get( 'wgTitle' ),
-                               namespaceID: config.get( 'wgNamespaceNumber' ),
-                               id: config.get( 'wgArticleId' )
-                       },
-                       user: {
-                               isAnon: user.isAnon(),
-                               editCount: editCount,
-                               previewCount: previewCount
-                       }
-               };
+       return {
+               type: types.BOOT,
+               isEnabled: isEnabled,
+               isNavPopupsEnabled: config.get( 
'wgPopupsConflictsWithNavPopupGadget' ),
+               sessionToken: user.sessionId(),
+               pageToken: generateToken(),
+               page: {
+                       title: config.get( 'wgTitle' ),
+                       namespaceID: config.get( 'wgNamespaceNumber' ),
+                       id: config.get( 'wgArticleId' )
+               },
+               user: {
+                       isAnon: user.isAnon(),
+                       editCount: editCount,
+                       previewCount: previewCount
+               }
        };
+};
 
-       /**
-        * How long has the user been actively reading the page?
-        * @param {number} time The number of seconds the user has seen the page
-        * @returns {{type: string, time: number}}
-        */
-       actions.checkin = function ( time ) {
-               return {
-                       type: types.CHECKIN,
-                       time: time
-               };
+/**
+ * How long has the user been actively reading the page?
+ * @param {number} time The number of seconds the user has seen the page
+ * @returns {{type: string, time: number}}
+ */
+actions.checkin = function ( time ) {
+       return {
+               type: types.CHECKIN,
+               time: time
        };
+};
 
-       /**
-        * Represents Page Previews fetching data via the gateway.
-        *
-        * @param {ext.popups.Gateway} gateway
-        * @param {Element} el
-        * @param {Date} started The time at which the interaction started.
-        * @return {Redux.Thunk}
-        */
-       actions.fetch = function ( gateway, el, started ) {
-               var title = $( el ).data( 'page-previews-title' );
+/**
+ * Represents Page Previews fetching data via the gateway.
+ *
+ * @param {ext.popups.Gateway} gateway
+ * @param {Element} el
+ * @param {Date} started The time at which the interaction started.
+ * @return {Redux.Thunk}
+ */
+actions.fetch = function ( gateway, el, started ) {
+       var title = $( el ).data( 'page-previews-title' );
 
-               return function ( dispatch ) {
-                       dispatch( {
-                               type: types.FETCH_START,
-                               el: el,
-                               title: title
-                       } );
+       return function ( dispatch ) {
+               dispatch( {
+                       type: types.FETCH_START,
+                       el: el,
+                       title: title
+               } );
 
-                       gateway.getPageSummary( title )
-                               .fail( function () {
-                                       dispatch( {
-                                               type: types.FETCH_FAILED,
-                                               el: el
-                                       } );
-                               } )
-                               .done( function ( result ) {
-                                       var now = mw.now(),
-                                               delay;
+               gateway.getPageSummary( title )
+                       .fail( function () {
+                               dispatch( {
+                                       type: types.FETCH_FAILED,
+                                       el: el
+                               } );
+                       } )
+                       .done( function ( result ) {
+                               var now = mw.now(),
+                                       delay;
 
-                                       // If the API request has taken longer 
than the target delay, then
-                                       // don't delay any further.
-                                       delay = Math.max(
-                                               FETCH_END_TARGET_DELAY - 
Math.round( now - started ),
-                                               0
-                                       );
+                               // If the API request has taken longer than the 
target delay, then
+                               // don't delay any further.
+                               delay = Math.max(
+                                       FETCH_END_TARGET_DELAY - Math.round( 
now - started ),
+                                       0
+                               );
 
-                                       mw.popups.wait( delay )
-                                               .then( function () {
-                                                       dispatch( {
-                                                               type: 
types.FETCH_END,
-                                                               el: el,
-                                                               result: result
-                                                       } );
+                               wait( delay )
+                                       .then( function () {
+                                               dispatch( {
+                                                       type: types.FETCH_END,
+                                                       el: el,
+                                                       result: result
                                                } );
-                               } );
-               };
-       };
-
-       /**
-        * Represents the user dwelling on a link, either by hovering over it 
with
-        * their mouse or by focussing it using their keyboard or an assistive 
device.
-        *
-        * @param {Element} el
-        * @param {Event} event
-        * @param {ext.popups.Gateway} gateway
-        * @param {Function} generateToken
-        * @return {Redux.Thunk}
-        */
-       actions.linkDwell = function ( el, event, gateway, generateToken ) {
-               var token = generateToken();
-
-               return function ( dispatch, getState ) {
-                       var action = timedAction( {
-                               type: types.LINK_DWELL,
-                               el: el,
-                               event: event,
-                               token: token
-                       } );
-
-                       // Has the new generated token been accepted?
-                       function isNewInteraction() {
-                               return getState().preview.activeToken === token;
-                       }
-
-                       dispatch( action );
-
-                       if ( !isNewInteraction() ) {
-                               return;
-                       }
-
-                       mw.popups.wait( FETCH_START_DELAY )
-                               .then( function () {
-                                       var previewState = getState().preview;
-
-                                       if ( previewState.enabled && 
isNewInteraction() ) {
-                                               dispatch( actions.fetch( 
gateway, el, action.timestamp ) );
-                                       }
-                               } );
-               };
-       };
-
-       /**
-        * Represents the user abandoning a link, either by moving their mouse 
away
-        * from it or by shifting focus to another UI element using their 
keyboard or
-        * an assistive device, or abandoning a preview by moving their mouse 
away
-        * from it.
-        *
-        * @return {Redux.Thunk}
-        */
-       actions.abandon = function () {
-               return function ( dispatch, getState ) {
-                       var token = getState().preview.activeToken;
-
-                       dispatch( timedAction( {
-                               type: types.ABANDON_START,
-                               token: token
-                       } ) );
-
-                       mw.popups.wait( ABANDON_END_DELAY )
-                               .then( function () {
-                                       dispatch( {
-                                               type: types.ABANDON_END,
-                                               token: token
                                        } );
-                               } );
-               };
-       };
-
-       /**
-        * Represents the user clicking on a link with their mouse, keyboard, 
or an
-        * assistive device.
-        *
-        * @param {Element} el
-        * @return {Object}
-        */
-       actions.linkClick = function ( el ) {
-               return timedAction( {
-                       type: types.LINK_CLICK,
-                       el: el
-               } );
-       };
-
-       /**
-        * Represents the user dwelling on a preview with their mouse.
-        *
-        * @return {Object}
-        */
-       actions.previewDwell = function () {
-               return {
-                       type: types.PREVIEW_DWELL
-               };
-       };
-
-       /**
-        * Represents a preview being shown to the user.
-        *
-        * This action is dispatched by the `mw.popups.changeListeners.render` 
change
-        * listener.
-        *
-        * @return {Object}
-        */
-       actions.previewShow = function () {
-               return timedAction( {
-                       type: types.PREVIEW_SHOW
-               } );
-       };
-
-       /**
-        * Represents the user clicking either the "Enable previews" footer 
menu link,
-        * or the "cog" icon that's present on each preview.
-        *
-        * @return {Object}
-        */
-       actions.showSettings = function () {
-               return {
-                       type: types.SETTINGS_SHOW
-               };
-       };
-
-       /**
-        * Represents the user closing the settings dialog and saving their 
settings.
-        *
-        * @return {Object}
-        */
-       actions.hideSettings = function () {
-               return {
-                       type: types.SETTINGS_HIDE
-               };
-       };
-
-       /**
-        * Represents the user saving their settings.
-        *
-        * N.B. This action returns a Redux.Thunk not because it needs to 
perform
-        * asynchronous work, but because it needs to query the global state 
for the
-        * current enabled state. In order to keep the enabled state in a single
-        * place (the preview reducer), we query it and dispatch it as 
`wasEnabled`
-        * so that other reducers (like settings) can act on it without having 
to
-        * duplicate the `enabled` state locally.
-        * See doc/adr/0003-keep-enabled-state-only-in-preview-reducer.md for 
more
-        * details.
-        *
-        * @param {Boolean} enabled if previews are enabled or not
-        * @return {Redux.Thunk}
-        */
-       actions.saveSettings = function ( enabled ) {
-               return function ( dispatch, getState ) {
-                       dispatch( {
-                               type: types.SETTINGS_CHANGE,
-                               wasEnabled: getState().preview.enabled,
-                               enabled: enabled
                        } );
-               };
        };
+};
 
-       /**
-        * Represents the queued event being logged
-        * `mw.popups.changeListeners.eventLogging` change listener.
-        *
-        * @return {Object}
-        */
-       actions.eventLogged = function () {
-               return {
-                       type: types.EVENT_LOGGED
-               };
+/**
+ * Represents the user dwelling on a link, either by hovering over it with
+ * their mouse or by focussing it using their keyboard or an assistive device.
+ *
+ * @param {Element} el
+ * @param {Event} event
+ * @param {ext.popups.Gateway} gateway
+ * @param {Function} generateToken
+ * @return {Redux.Thunk}
+ */
+actions.linkDwell = function ( el, event, gateway, generateToken ) {
+       var token = generateToken();
+
+       return function ( dispatch, getState ) {
+               var action = timedAction( {
+                       type: types.LINK_DWELL,
+                       el: el,
+                       event: event,
+                       token: token
+               } );
+
+               // Has the new generated token been accepted?
+               function isNewInteraction() {
+                       return getState().preview.activeToken === token;
+               }
+
+               dispatch( action );
+
+               if ( !isNewInteraction() ) {
+                       return;
+               }
+
+               wait( FETCH_START_DELAY )
+                       .then( function () {
+                               var previewState = getState().preview;
+
+                               if ( previewState.enabled && isNewInteraction() 
) {
+                                       dispatch( actions.fetch( gateway, el, 
action.timestamp ) );
+                               }
+                       } );
        };
+};
 
-       module.exports = actions;
+/**
+ * Represents the user abandoning a link, either by moving their mouse away
+ * from it or by shifting focus to another UI element using their keyboard or
+ * an assistive device, or abandoning a preview by moving their mouse away
+ * from it.
+ *
+ * @return {Redux.Thunk}
+ */
+actions.abandon = function () {
+       return function ( dispatch, getState ) {
+               var token = getState().preview.activeToken;
 
-}( mediaWiki, jQuery ) );
+               dispatch( timedAction( {
+                       type: types.ABANDON_START,
+                       token: token
+               } ) );
+
+               wait( ABANDON_END_DELAY )
+                       .then( function () {
+                               dispatch( {
+                                       type: types.ABANDON_END,
+                                       token: token
+                               } );
+                       } );
+       };
+};
+
+/**
+ * Represents the user clicking on a link with their mouse, keyboard, or an
+ * assistive device.
+ *
+ * @param {Element} el
+ * @return {Object}
+ */
+actions.linkClick = function ( el ) {
+       return timedAction( {
+               type: types.LINK_CLICK,
+               el: el
+       } );
+};
+
+/**
+ * Represents the user dwelling on a preview with their mouse.
+ *
+ * @return {Object}
+ */
+actions.previewDwell = function () {
+       return {
+               type: types.PREVIEW_DWELL
+       };
+};
+
+/**
+ * Represents a preview being shown to the user.
+ *
+ * This action is dispatched by the `mw.popups.changeListeners.render` change
+ * listener.
+ *
+ * @return {Object}
+ */
+actions.previewShow = function () {
+       return timedAction( {
+               type: types.PREVIEW_SHOW
+       } );
+};
+
+/**
+ * Represents the user clicking either the "Enable previews" footer menu link,
+ * or the "cog" icon that's present on each preview.
+ *
+ * @return {Object}
+ */
+actions.showSettings = function () {
+       return {
+               type: types.SETTINGS_SHOW
+       };
+};
+
+/**
+ * Represents the user closing the settings dialog and saving their settings.
+ *
+ * @return {Object}
+ */
+actions.hideSettings = function () {
+       return {
+               type: types.SETTINGS_HIDE
+       };
+};
+
+/**
+ * Represents the user saving their settings.
+ *
+ * N.B. This action returns a Redux.Thunk not because it needs to perform
+ * asynchronous work, but because it needs to query the global state for the
+ * current enabled state. In order to keep the enabled state in a single
+ * place (the preview reducer), we query it and dispatch it as `wasEnabled`
+ * so that other reducers (like settings) can act on it without having to
+ * duplicate the `enabled` state locally.
+ * See doc/adr/0003-keep-enabled-state-only-in-preview-reducer.md for more
+ * details.
+ *
+ * @param {Boolean} enabled if previews are enabled or not
+ * @return {Redux.Thunk}
+ */
+actions.saveSettings = function ( enabled ) {
+       return function ( dispatch, getState ) {
+               dispatch( {
+                       type: types.SETTINGS_CHANGE,
+                       wasEnabled: getState().preview.enabled,
+                       enabled: enabled
+               } );
+       };
+};
+
+/**
+ * Represents the queued event being logged
+ * `mw.popups.changeListeners.eventLogging` change listener.
+ *
+ * @return {Object}
+ */
+actions.eventLogged = function () {
+       return {
+               type: types.EVENT_LOGGED
+       };
+};
+
+module.exports = actions;

-- 
To view, visit https://gerrit.wikimedia.org/r/337819
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6031efbce04d4cd91a37690469d49ffd0372b41c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Popups
Gerrit-Branch: master
Gerrit-Owner: Jhernandez <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to