oont-contents/plugins/jetpack/modules/post-by-email/post-by-email.js
2025-02-08 15:10:23 +01:00

144 lines
3.7 KiB
JavaScript

/* global jetpack_post_by_email:true, pbeVars */
( function ( $ ) {
var $pbeDisable,
$pbeEmail,
$pbeEmailWrapper,
$pbeEnable,
$pbeError,
$pbeInfo,
$pbeRegenerate,
$pbeSpinner;
jetpack_post_by_email = {
init: function () {
$pbeEnable.click( jetpack_post_by_email.enable );
$pbeRegenerate.click( jetpack_post_by_email.regenerate );
$pbeDisable.click( jetpack_post_by_email.disable );
},
enable: function () {
$pbeEnable.attr( 'disabled', 'disabled' );
$pbeError.fadeOut();
$pbeSpinner.fadeIn();
jetpack_post_by_email.send_request(
{ post_by_email_address: 'create' },
jetpack_post_by_email.handle_enabled
);
},
handle_enabled: function ( response ) {
$pbeRegenerate.removeAttr( 'disabled' );
$pbeDisable.removeAttr( 'disabled' );
if ( response.code === 'success' ) {
$pbeEnable.fadeOut( 400, function () {
$pbeEnable.removeAttr( 'disabled' );
$pbeEmail.val( response.post_by_email_address );
$pbeInfo.fadeIn();
} );
} else {
$pbeError.text( jetpack_post_by_email.parse_error_message( response ) );
$pbeError.fadeIn();
$pbeEnable.removeAttr( 'disabled' );
}
$pbeSpinner.fadeOut();
},
regenerate: function () {
jetpack_post_by_email.before_request();
jetpack_post_by_email.send_request(
{ post_by_email_address: 'regenerate' },
jetpack_post_by_email.handle_regenerated
);
},
handle_regenerated: function ( response ) {
if ( response.code === 'success' ) {
$pbeEmailWrapper.fadeOut( 400, function () {
$pbeEmail.val( response.post_by_email_address );
$pbeEmailWrapper.fadeIn();
} );
} else {
$pbeError.text( jetpack_post_by_email.parse_error_message( response ) );
$pbeError.fadeIn();
}
$pbeRegenerate.removeAttr( 'disabled' );
$pbeDisable.removeAttr( 'disabled' );
$pbeSpinner.fadeOut();
},
disable: function () {
jetpack_post_by_email.before_request();
jetpack_post_by_email.send_request(
{ post_by_email_address: 'delete' },
jetpack_post_by_email.handle_disabled
);
},
handle_disabled: function ( response ) {
if ( response.code === 'success' ) {
$pbeEnable.removeAttr( 'disabled' );
$pbeInfo.fadeOut( 400, function () {
$pbeRegenerate.removeAttr( 'disabled' );
$pbeDisable.removeAttr( 'disabled' );
$pbeEnable.fadeIn();
} );
} else {
$pbeRegenerate.removeAttr( 'disabled' );
$pbeDisable.removeAttr( 'disabled' );
$pbeError.text( jetpack_post_by_email.parse_error_message( response ) );
$pbeError.fadeIn();
}
$pbeSpinner.fadeOut();
},
send_request: function ( data, callback ) {
var request = new XMLHttpRequest();
request.open( 'POST', '/wp-json/jetpack/v4/settings/' );
request.setRequestHeader( 'Content-Type', 'application/json' );
request.setRequestHeader( 'X-WP-Nonce', pbeVars.rest_nonce );
request.onreadystatechange = function () {
if ( this.readyState === XMLHttpRequest.DONE ) {
callback( JSON.parse( this.response ) );
}
};
request.send( JSON.stringify( data ) );
},
parse_error_message: function ( data ) {
if ( data.message ) {
return data.message.replace( /^.*?:/, '' );
}
return '';
},
before_request: function () {
$pbeRegenerate.attr( 'disabled', 'disabled' );
$pbeDisable.attr( 'disabled', 'disabled' );
$pbeError.fadeOut();
$pbeSpinner.fadeIn();
},
};
$( function () {
$pbeDisable = $( '#jp-pbe-disable' );
$pbeEmail = $( '#jp-pbe-email' );
$pbeEmailWrapper = $( '#jp-pbe-email-wrapper' );
$pbeEnable = $( '#jp-pbe-enable' );
$pbeError = $( '#jp-pbe-error' );
$pbeInfo = $( '#jp-pbe-info' );
$pbeRegenerate = $( '#jp-pbe-regenerate' );
$pbeSpinner = $( '#jp-pbe-spinner' );
jetpack_post_by_email.init();
} );
} )( jQuery );