mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Cite
synced 2024-12-04 03:18:19 +00:00
f0849b2b17
This updates the easy variables which are set and get within a single module, these changes should have no effect and don't need to be coordinated across extensions. Bug: T362332 Change-Id: Ibbe69c321e9e2b744ec88cebbdc3476d776f5956
42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
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 ) {
|
|
// TODO: This and the final `mw.user.options` check are currently redundant. Only this here
|
|
// should be removed when the wgCiteReferencePreviews feature flag is not needed any more.
|
|
if ( !config.get( 'wgCiteReferencePreviews' ) ) {
|
|
return null;
|
|
}
|
|
|
|
// T265872: Unavailable when in conflict with (one of the) reference tooltips gadgets.
|
|
if ( config.get( 'wgCiteReferencePreviewsConflictsWithRefTooltipsGadget' ) ||
|
|
config.get( 'wgPopupsConflictsWithNavPopupGadget' ) ||
|
|
// T243822: Temporarily disabled in the mobile skin
|
|
config.get( 'skin' ) === 'minerva'
|
|
) {
|
|
return null;
|
|
}
|
|
|
|
if ( user.isAnon() ) {
|
|
return isPreviewTypeEnabled( TYPE_REFERENCE );
|
|
}
|
|
|
|
// Registered users never can enable popup types at run-time.
|
|
return user.options.get( 'popups-reference-previews' ) === '1' ? true : null;
|
|
}
|
|
|
|
module.exports = isReferencePreviewsEnabled;
|