( function ( mw, M, $ ) { /** * Create a thank button for a given edit * * @param {string} name The username of the user who made the edit * @param {string} revision The revision the user created * @param {string} gender The gender of the user who made the edit */ function thankUser( name, revision, gender ) { var d = $.Deferred(); ( new mw.Api() ).postWithToken( 'csrf', { action: 'thank', rev: revision, source: 'mobilediff' } ).done( function () { mw.notify( mw.msg( 'thanks-thanked-notice', name, gender ) ); d.resolve(); } ) .fail( function ( errorCode ) { switch ( errorCode ) { case 'invalidrevision': popup.show( mw.msg( 'thanks-error-invalidrevision' ) ); break; case 'ratelimited': popup.show( mw.msg( 'thanks-error-ratelimited', gender ) ); break; default: popup.show( mw.msg( 'thanks-error-undefined', errorCode ) ); } d.reject(); } ); return d; } /** * Create a thank button for a given edit * * @param {string} name The username of the user who made the edit * @param {string} rev The revision the user created * @param {string} gender The gender of the user who made the edit */ function createThankLink( name, rev, gender ) { var thankImg = mw.config.get( 'wgExtensionAssetsPath' ) + '/Thanks/WhiteSmiley.png', thankImgTag = '', $thankBtn; // Don't make thank button for self if ( name !== mw.config.get( 'wgUserName' ) ) { // See if user has already been thanked for this edit if ( mw.config.get( 'wgThanksAlreadySent' ) ) { $thankBtn = $( '