mediawiki-extensions-Revisi.../modules/ext.RevisionSlider.Settings.js
thiemowmde fe8f8fa05d Don't add keypress handler when not needed
I'm not sure why it was done this way. Probably because it doesn't
make an actual difference from the user's perspective. My motivation
is: When we already called the code that auto-expands the
RevisionSlider UI then it doesn't make much sense to give the user
a keyypress handler that does the same a second time.

Possibly even related to T342556?

This patch also contains a few small, unrelated code cleanups.

Change-Id: I123e89d9d7dc3b1e33cf43831c679330d9dd1cdd
2023-08-28 06:10:06 +00:00

105 lines
2.2 KiB
JavaScript

/**
* @class Settings
* @constructor
*/
function Settings() {
this.hideHelpDialogue = this.loadBoolean( 'hide-help-dialogue' );
this.autoExpand = this.loadBoolean( 'autoexpand' );
}
$.extend( Settings.prototype, {
/**
* @type {boolean}
*/
hideHelpDialogue: null,
/**
* @type {boolean}
*/
autoExpand: null,
/**
* @return {boolean}
*/
shouldHideHelpDialogue: function () {
return this.hideHelpDialogue;
},
/**
* @return {boolean}
*/
shouldAutoExpand: function () {
return this.autoExpand;
},
/**
* @param {boolean} newSetting
*/
setHideHelpDialogue: function ( newSetting ) {
if ( newSetting !== this.hideHelpDialogue ) {
this.saveBoolean( 'hide-help-dialogue', newSetting );
this.hideHelpDialogue = newSetting;
}
},
/**
* @param {boolean} newSetting
*/
setAutoExpand: function ( newSetting ) {
if ( newSetting !== this.autoExpand ) {
this.saveBoolean( 'autoexpand', newSetting );
this.autoExpand = newSetting;
}
},
/**
* @param {string} name
* @param {string} defaultValue
* @return {string|boolean}
*/
loadSetting: function ( name, defaultValue ) {
let setting;
if ( mw.user.isNamed() ) {
setting = mw.user.options.get( 'userjs-revslider-' + name );
} else {
setting = mw.storage.get( 'mw-revslider-' + name ) ||
mw.cookie.get( '-revslider-' + name );
}
return setting !== null && setting !== false ? setting : defaultValue;
},
/**
* @param {string} name
* @param {boolean} [defaultValue]
* @return {boolean}
*/
loadBoolean: function ( name, defaultValue ) {
return this.loadSetting( name, defaultValue ? '1' : '0' ) === '1';
},
/**
* @param {string} name
* @param {string} value
*/
saveSetting: function ( name, value ) {
if ( mw.user.isNamed() ) {
( new mw.Api() ).saveOption( 'userjs-revslider-' + name, value );
} else {
if ( !mw.storage.set( 'mw-revslider-' + name, value ) ) {
mw.cookie.set( '-revslider-' + name, value ); // use cookie when localStorage is not available
}
}
},
/**
* @param {string} name
* @param {boolean} value
*/
saveBoolean: function ( name, value ) {
this.saveSetting( name, value ? '1' : '0' );
}
} );
module.exports = Settings;