mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Cite
synced 2025-01-09 12:14:11 +00:00
Merge "[refactor] Merge some ReferencePreviews code"
This commit is contained in:
commit
175ad76a08
|
@ -1,4 +0,0 @@
|
|||
module.exports = {
|
||||
TYPE_REFERENCE: 'reference',
|
||||
FETCH_DELAY_REFERENCE_TYPE: 150
|
||||
};
|
|
@ -2,7 +2,7 @@
|
|||
* @module gateway/reference
|
||||
*/
|
||||
|
||||
const { TYPE_REFERENCE } = require( './constants.js' );
|
||||
const TYPE_REFERENCE = 'reference';
|
||||
|
||||
/**
|
||||
* @return {Gateway}
|
||||
|
|
|
@ -1,15 +1,36 @@
|
|||
const isReferencePreviewsEnabled = require( './isReferencePreviewsEnabled.js' );
|
||||
const { initReferencePreviewsInstrumentation, LOGGING_SCHEMA } = require( './referencePreviewsInstrumentation.js' );
|
||||
const createReferenceGateway = require( './createReferenceGateway.js' );
|
||||
const renderFn = require( './createReferencePreview.js' );
|
||||
const { TYPE_REFERENCE, FETCH_DELAY_REFERENCE_TYPE } = require( './constants.js' );
|
||||
const createReferencePreview = require( './createReferencePreview.js' );
|
||||
const TYPE_REFERENCE = 'reference';
|
||||
|
||||
/**
|
||||
* Given the global state of the application, creates a function that gets
|
||||
* whether or not the user should have Reference Previews enabled.
|
||||
*
|
||||
* @param {mw.user} user The `mw.user` singleton instance
|
||||
* @param {Function} isPreviewTypeEnabled check whether preview has been disabled or enabled.
|
||||
* @param {mw.Map} config
|
||||
*
|
||||
* @return {boolean|null} Null when there is no way the popup type can be enabled at run-time.
|
||||
* @memberof module:ext.cite.referencePreviews
|
||||
*/
|
||||
function isReferencePreviewsEnabled( user, isPreviewTypeEnabled, config ) {
|
||||
if ( !config.get( 'wgCiteReferencePreviewsActive' ) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ( user.isAnon() ) {
|
||||
return isPreviewTypeEnabled( TYPE_REFERENCE );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
const referencePreviewsState = isReferencePreviewsEnabled(
|
||||
mw.user,
|
||||
mw.popups.isEnabled,
|
||||
mw.config
|
||||
);
|
||||
const gateway = createReferenceGateway();
|
||||
|
||||
// For tracking baseline stats in the Cite extension https://phabricator.wikimedia.org/T353798
|
||||
// FIXME: This might be obsolete when the code moves to the Cite extension and the tracking there
|
||||
|
@ -22,22 +43,32 @@ mw.trackSubscribe( 'Popups.SettingChange', ( data ) => {
|
|||
}
|
||||
} );
|
||||
|
||||
module.exports = referencePreviewsState !== null ? {
|
||||
/**
|
||||
* Create the relevant config to register the preview type in the Popups extension.
|
||||
*
|
||||
* @see mw.popups.register()
|
||||
* @memberof module:ext.cite.referencePreviews
|
||||
*/
|
||||
function createReferencePreviewsType() {
|
||||
return {
|
||||
type: TYPE_REFERENCE,
|
||||
selector: '#mw-content-text .reference a[ href*="#" ]',
|
||||
delay: FETCH_DELAY_REFERENCE_TYPE,
|
||||
gateway,
|
||||
renderFn,
|
||||
delay: 150,
|
||||
gateway: createReferenceGateway(),
|
||||
renderFn: createReferencePreview,
|
||||
init: () => {
|
||||
initReferencePreviewsInstrumentation();
|
||||
}
|
||||
} : null;
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = referencePreviewsState !== null ? createReferencePreviewsType() : null;
|
||||
|
||||
// Expose private methods for QUnit tests
|
||||
if ( typeof QUnit !== 'undefined' ) {
|
||||
module.exports = { private: {
|
||||
createReferenceGateway: require( './createReferenceGateway.js' ),
|
||||
createReferencePreview: require( './createReferencePreview.js' ),
|
||||
isReferencePreviewsEnabled: require( './isReferencePreviewsEnabled.js' )
|
||||
isReferencePreviewsEnabled
|
||||
} };
|
||||
}
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
const { TYPE_REFERENCE } = require( './constants.js' );
|
||||
|
||||
/**
|
||||
* @module isReferencePreviewsEnabled
|
||||
*/
|
||||
|
||||
/**
|
||||
* Given the global state of the application, creates a function that gets
|
||||
* whether or not the user should have Reference Previews enabled.
|
||||
*
|
||||
* @param {mw.user} user The `mw.user` singleton instance
|
||||
* @param {Function} isPreviewTypeEnabled check whether preview has been disabled or enabled.
|
||||
* @param {mw.Map} config
|
||||
*
|
||||
* @return {boolean|null} Null when there is no way the popup type can be enabled at run-time.
|
||||
*/
|
||||
function isReferencePreviewsEnabled( user, isPreviewTypeEnabled, config ) {
|
||||
if ( !config.get( 'wgCiteReferencePreviewsActive' ) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ( user.isAnon() ) {
|
||||
return isPreviewTypeEnabled( TYPE_REFERENCE );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
module.exports = isReferencePreviewsEnabled;
|
|
@ -125,10 +125,8 @@ class CiteHooks implements
|
|||
],
|
||||
'packageFiles' => [
|
||||
'index.js',
|
||||
'constants.js',
|
||||
'createReferenceGateway.js',
|
||||
'createReferencePreview.js',
|
||||
'isReferencePreviewsEnabled.js',
|
||||
'referencePreviewsInstrumentation.js'
|
||||
]
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue