summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/extensions/blocks/mailchimp/edit.js')
-rw-r--r--plugins/jetpack/extensions/blocks/mailchimp/edit.js235
1 files changed, 0 insertions, 235 deletions
diff --git a/plugins/jetpack/extensions/blocks/mailchimp/edit.js b/plugins/jetpack/extensions/blocks/mailchimp/edit.js
deleted file mode 100644
index 88f2a84f..00000000
--- a/plugins/jetpack/extensions/blocks/mailchimp/edit.js
+++ /dev/null
@@ -1,235 +0,0 @@
-/**
- * External dependencies
- */
-import apiFetch from '@wordpress/api-fetch';
-import classnames from 'classnames';
-import SubmitButton from '../../shared/submit-button';
-import { __ } from '@wordpress/i18n';
-import {
- Button,
- ExternalLink,
- PanelBody,
- Placeholder,
- Spinner,
- TextControl,
- withNotices,
-} from '@wordpress/components';
-import { InspectorControls, RichText } from '@wordpress/editor';
-import { Fragment, Component } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import { icon } from '.';
-
-const API_STATE_LOADING = 0;
-const API_STATE_CONNECTED = 1;
-const API_STATE_NOTCONNECTED = 2;
-
-const NOTIFICATION_PROCESSING = 'processing';
-const NOTIFICATION_SUCCESS = 'success';
-const NOTIFICATION_ERROR = 'error';
-
-class MailchimpSubscribeEdit extends Component {
- constructor() {
- super( ...arguments );
- this.state = {
- audition: null,
- connected: API_STATE_LOADING,
- connectURL: null,
- };
- this.timeout = null;
- }
-
- componentDidMount = () => {
- this.apiCall();
- };
-
- onError = message => {
- const { noticeOperations } = this.props;
- noticeOperations.removeAllNotices();
- noticeOperations.createErrorNotice( message );
- };
-
- apiCall = () => {
- const path = '/wpcom/v2/mailchimp';
- const method = 'GET';
- const fetch = { path, method };
- apiFetch( fetch ).then(
- result => {
- const connectURL = result.connect_url;
- const connected =
- result.code === 'connected' ? API_STATE_CONNECTED : API_STATE_NOTCONNECTED;
- this.setState( { connected, connectURL } );
- },
- result => {
- const connectURL = null;
- const connected = API_STATE_NOTCONNECTED;
- this.setState( { connected, connectURL } );
- this.onError( result.message );
- }
- );
- };
-
- auditionNotification = notification => {
- this.setState( { audition: notification } );
- if ( this.timeout ) {
- clearTimeout( this.timeout );
- }
- this.timeout = setTimeout( this.clearAudition, 3000 );
- };
-
- clearAudition = () => {
- this.setState( { audition: null } );
- };
-
- updateProcessingText = processingLabel => {
- const { setAttributes } = this.props;
- setAttributes( { processingLabel } );
- this.auditionNotification( NOTIFICATION_PROCESSING );
- };
-
- updateSuccessText = successLabel => {
- const { setAttributes } = this.props;
- setAttributes( { successLabel } );
- this.auditionNotification( NOTIFICATION_SUCCESS );
- };
-
- updateErrorText = errorLabel => {
- const { setAttributes } = this.props;
- setAttributes( { errorLabel } );
- this.auditionNotification( NOTIFICATION_ERROR );
- };
-
- updateEmailPlaceholder = emailPlaceholder => {
- const { setAttributes } = this.props;
- setAttributes( { emailPlaceholder } );
- this.clearAudition();
- };
-
- labelForAuditionType = audition => {
- const { attributes } = this.props;
- const { processingLabel, successLabel, errorLabel } = attributes;
- if ( audition === NOTIFICATION_PROCESSING ) {
- return processingLabel;
- } else if ( audition === NOTIFICATION_SUCCESS ) {
- return successLabel;
- } else if ( audition === NOTIFICATION_ERROR ) {
- return errorLabel;
- }
- return null;
- };
-
- roleForAuditionType = audition => {
- if ( audition === NOTIFICATION_ERROR ) {
- return 'alert';
- }
- return 'status';
- };
-
- render = () => {
- const { attributes, className, notices, noticeUI, setAttributes } = this.props;
- const { audition, connected, connectURL } = this.state;
- const { emailPlaceholder, consentText, processingLabel, successLabel, errorLabel } = attributes;
- const classPrefix = 'wp-block-jetpack-mailchimp_';
- const waiting = (
- <Placeholder icon={ icon } notices={ notices }>
- <Spinner />
- </Placeholder>
- );
- const placeholder = (
- <Placeholder icon={ icon } label={ __( 'Mailchimp', 'jetpack' ) } notices={ notices }>
- <div className="components-placeholder__instructions">
- { __(
- 'You need to connect your Mailchimp account and choose a list in order to start collecting Email subscribers.',
- 'jetpack'
- ) }
- <br />
- <br />
- <Button isDefault isLarge href={ connectURL } target="_blank">
- { __( 'Set up Mailchimp form', 'jetpack' ) }
- </Button>
- <br />
- <br />
- <Button isLink onClick={ this.apiCall }>
- { __( 'Re-check Connection', 'jetpack' ) }
- </Button>
- </div>
- </Placeholder>
- );
- const inspectorControls = (
- <InspectorControls>
- <PanelBody title={ __( 'Text Elements', 'jetpack' ) }>
- <TextControl
- label={ __( 'Email Placeholder', 'jetpack' ) }
- value={ emailPlaceholder }
- onChange={ this.updateEmailPlaceholder }
- />
- </PanelBody>
- <PanelBody title={ __( 'Notifications', 'jetpack' ) }>
- <TextControl
- label={ __( 'Processing text', 'jetpack' ) }
- value={ processingLabel }
- onChange={ this.updateProcessingText }
- />
- <TextControl
- label={ __( 'Success text', 'jetpack' ) }
- value={ successLabel }
- onChange={ this.updateSuccessText }
- />
- <TextControl
- label={ __( 'Error text', 'jetpack' ) }
- value={ errorLabel }
- onChange={ this.updateErrorText }
- />
- </PanelBody>
- <PanelBody title={ __( 'Mailchimp Connection', 'jetpack' ) }>
- <ExternalLink href={ connectURL }>{ __( 'Manage Connection', 'jetpack' ) }</ExternalLink>
- </PanelBody>
- </InspectorControls>
- );
- const blockClasses = classnames( className, {
- [ `${ classPrefix }notication-audition` ]: audition,
- } );
- const blockContent = (
- <div className={ blockClasses }>
- <TextControl
- aria-label={ emailPlaceholder }
- className="wp-block-jetpack-mailchimp_text-input"
- disabled
- onChange={ () => false }
- placeholder={ emailPlaceholder }
- title={ __( 'You can edit the email placeholder in the sidebar.', 'jetpack' ) }
- type="email"
- />
- <SubmitButton { ...this.props } />
- <RichText
- tagName="p"
- placeholder={ __( 'Write consent text', 'jetpack' ) }
- value={ consentText }
- onChange={ value => setAttributes( { consentText: value } ) }
- inlineToolbar
- />
- { audition && (
- <div
- className={ `${ classPrefix }notification ${ classPrefix }${ audition }` }
- role={ this.roleForAuditionType( audition ) }
- >
- { this.labelForAuditionType( audition ) }
- </div>
- ) }
- </div>
- );
- return (
- <Fragment>
- { noticeUI }
- { connected === API_STATE_LOADING && waiting }
- { connected === API_STATE_NOTCONNECTED && placeholder }
- { connected === API_STATE_CONNECTED && inspectorControls }
- { connected === API_STATE_CONNECTED && blockContent }
- </Fragment>
- );
- };
-}
-
-export default withNotices( MailchimpSubscribeEdit );