summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/extensions/blocks/mailchimp/view.js')
-rw-r--r--plugins/jetpack/extensions/blocks/mailchimp/view.js91
1 files changed, 0 insertions, 91 deletions
diff --git a/plugins/jetpack/extensions/blocks/mailchimp/view.js b/plugins/jetpack/extensions/blocks/mailchimp/view.js
deleted file mode 100644
index a2ec7680..00000000
--- a/plugins/jetpack/extensions/blocks/mailchimp/view.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Internal dependencies
- */
-import emailValidator from 'email-validator';
-
-/**
- * Internal dependencies
- */
-import './view.scss';
-
-const blockClassName = 'wp-block-jetpack-mailchimp';
-
-function fetchSubscription( blogId, email ) {
- const url =
- 'https://public-api.wordpress.com/rest/v1.1/sites/' +
- encodeURIComponent( blogId ) +
- '/email_follow/subscribe?email=' +
- encodeURIComponent( email );
- return new Promise( function( resolve, reject ) {
- const xhr = new XMLHttpRequest();
- xhr.open( 'GET', url );
- xhr.onload = function() {
- if ( xhr.status === 200 ) {
- const res = JSON.parse( xhr.responseText );
- resolve( res );
- } else {
- const res = JSON.parse( xhr.responseText );
- reject( res );
- }
- };
- xhr.send();
- } );
-}
-
-function activateSubscription( block, blogId ) {
- const form = block.querySelector( 'form' );
- const errorClass = 'error';
- const processingEl = block.querySelector( '.' + blockClassName + '_processing' );
- const errorEl = block.querySelector( '.' + blockClassName + '_error' );
- const successEl = block.querySelector( '.' + blockClassName + '_success' );
- form.addEventListener( 'submit', e => {
- e.preventDefault();
- const emailField = form.querySelector( 'input' );
- emailField.classList.remove( errorClass );
- const email = emailField.value;
- if ( ! emailValidator.validate( email ) ) {
- emailField.classList.add( errorClass );
- return;
- }
- block.classList.add( 'is-processing' );
- processingEl.classList.add( 'is-visible' );
- fetchSubscription( blogId, email ).then(
- response => {
- processingEl.classList.remove( 'is-visible' );
- if ( response.error && response.error !== 'member_exists' ) {
- errorEl.classList.add( 'is-visible' );
- } else {
- successEl.classList.add( 'is-visible' );
- }
- },
- () => {
- processingEl.classList.remove( 'is-visible' );
- errorEl.classList.add( 'is-visible' );
- }
- );
- } );
-}
-
-const initializeMailchimpBlocks = () => {
- const mailchimpBlocks = Array.from( document.querySelectorAll( '.' + blockClassName ) );
- mailchimpBlocks.forEach( block => {
- const blog_id = block.getAttribute( 'data-blog-id' );
- try {
- activateSubscription( block, blog_id );
- } catch ( err ) {
- if ( 'production' !== process.env.NODE_ENV ) {
- // eslint-disable-next-line no-console
- console.error( err );
- }
- }
- } );
-};
-
-if ( typeof window !== 'undefined' && typeof document !== 'undefined' ) {
- // `DOMContentLoaded` may fire before the script has a chance to run
- if ( document.readyState === 'loading' ) {
- document.addEventListener( 'DOMContentLoaded', initializeMailchimpBlocks );
- } else {
- initializeMailchimpBlocks();
- }
-}