wikimedia/mediawiki-extensions-VisualEditor

View on GitHub
modules/ve-mw/preinit/ve.init.MWEditingTabDialog.js

Summary

Maintainability
A
0 mins
Test Coverage
/*!
 * VisualEditor user interface MWEditingTabDialog class.
 *
 * @copyright See AUTHORS.txt
 * @license The MIT License (MIT); see LICENSE.txt
 */

mw.libs.ve = mw.libs.ve || {};
/**
 * Dialog for allowing new users to change editing tab preferences.
 *
 * @class
 * @extends OO.ui.MessageDialog
 *
 * @constructor
 * @param {Object} [config] Configuration options
 */
mw.libs.ve.EditingTabDialog = function MWLibsVEMWEditingTabDialog( config ) {
    // Parent constructor
    mw.libs.ve.EditingTabDialog.super.call( this, config );
};

/* Inheritance */

OO.inheritClass( mw.libs.ve.EditingTabDialog, OO.ui.MessageDialog );

/* Static Properties */

mw.libs.ve.EditingTabDialog.static.name = 'editingtab';

mw.libs.ve.EditingTabDialog.static.size = 'medium';

mw.libs.ve.EditingTabDialog.static.title = mw.msg( 'visualeditor-editingtabdialog-title' );

mw.libs.ve.EditingTabDialog.static.message = mw.msg( 'visualeditor-editingtabdialog-body' );

mw.libs.ve.EditingTabDialog.static.actions = [

    {
        action: 'prefer-wt',
        label: mw.msg( 'visualeditor-preference-tabs-prefer-wt' )
    },
    {
        action: 'prefer-ve',
        label: mw.msg( 'visualeditor-preference-tabs-prefer-ve' )
    },
    {
        action: 'multi-tab',
        label: mw.msg( 'visualeditor-preference-tabs-multi-tab' )
    },
    {
        label: mw.msg( 'visualeditor-editingtabdialog-ok' ),
        flags: [ 'progressive', 'primary' ]
    }
];

/* Methods */

/**
 * @inheritdoc
 */
mw.libs.ve.EditingTabDialog.prototype.getSetupProcess = function ( action ) {
    return mw.libs.ve.EditingTabDialog.super.prototype.getSetupProcess.call( this, action )
        .next( () => {
            // Same as ve.init.target.getLocalApi()
            new mw.Api().saveOption( 'visualeditor-hidetabdialog', 1 );
            mw.user.options.set( 'visualeditor-hidetabdialog', 1 );
        } );
};

/**
 * @inheritdoc
 */
mw.libs.ve.EditingTabDialog.prototype.getActionProcess = function ( action ) {
    if ( action ) {
        return new OO.ui.Process( () => {
            const actionWidget = this.getActions().get( { actions: action } )[ 0 ];
            actionWidget.pushPending();
            this.pushPending();

            // Same as ve.init.target.getLocalApi()
            new mw.Api().saveOption( 'visualeditor-tabs', action ).done( () => {
                actionWidget.popPending();
                mw.user.options.set( 'visualeditor-tabs', action );
                this.close( { action: action } );
            } );
        } );
    } else {
        // Parent method
        return mw.libs.ve.EditingTabDialog.super.prototype.getActionProcess.call( this, action );
    }
};