import { createElement, useEffect, useState, Fragment, } from '@wordpress/element' import classnames from 'classnames' import { __, sprintf } from 'ct-i18n' import ListPicker from './ListPicker' import { Select } from 'blocksy-options' import useProExtensionInFree from '../../../../../static/js/dashboard/helpers/useProExtensionInFree' const freeProviders = ['mailchimp', 'demo'] const EditCredentials = ({ extension, onCredentialsValidated }) => { const [provider, setProvider] = useState(extension.data.provider) const [apiKey, setApiKey] = useState(extension.data.api_key) const [apiUrl, setApiUrl] = useState(extension.data.api_url) const [listId, setListId] = useState(extension.data.list_id) const [hasList, setHasList] = useState(false) const [isLoading, setIsLoading] = useState(false) const { isPro, showNotice, content } = useProExtensionInFree(extension, { strategy: 'pro', }) useEffect(() => { if ( extension.data && !freeProviders.includes(extension.data.provider) && !isPro ) { setProvider(freeProviders[0]) } }, []) const attemptToSaveCredentials = async () => { const body = new FormData() body.append('provider', provider) body.append('api_key', apiKey) body.append('api_url', apiUrl) body.append('list_id', listId) body.append( 'action', 'blocksy_ext_newsletter_subscribe_maybe_save_credentials' ) body.append('nonce', ctDashboardLocalizations.dashboard_actions_nonce) setIsLoading(true) try { const response = await fetch(ctDashboardLocalizations.ajax_url, { method: 'POST', body, }) if (response.status === 200) { const body = await response.json() if (body.success) { if (body.data.result !== 'api_key_invalid') { onCredentialsValidated() } } } } catch (e) {} await new Promise((r) => setTimeout(() => r(), 1000)) setIsLoading(false) } const providerMap = { mailerlite: 'mailerlite-new', convertkit: 'convertkit-new', } const transformedProvider = Object.keys(providerMap).find((p) => provider.includes(p)) || provider const value = providerMap[transformedProvider] || provider return (

{__('Connect Newsletter Provider', 'blocksy-companion')}

-1 || provider === 'activecampaign' || provider.indexOf('convertkit') > -1 ? 4 : ['mailpoet', 'fluentcrm'].includes(provider) ? 2 : 3 }>
setApiUrl(value) } value={apiUrl || ''} />
)} {provider.indexOf('mailerlite') > -1 && (
{ setProvider( copy === 'new' ? 'convertkit-new' : 'convertkit' ) }} option={{ placeholder: __( 'Pick Mailing Service', 'blocksy-companion' ), choices: [ { key: 'new', value: 'New (v4)', }, { key: 'classic', value: 'Classic (v3)', }, ], }} value={ provider === 'convertkit-new' ? 'new' : 'classic' } />
)} {(freeProviders.includes(provider) || ctDashboardLocalizations.plugin_data.is_pro) && ( {!['mailpoet', 'fluentcrm'].includes(provider) ? (
setApiKey(value) } value={apiKey || ''} />
) : null}
setListId(id)} provider={provider} apiUrl={apiUrl} apiKey={apiKey} onListsLoading={(listsLength) => setHasList(!!listsLength) } />
)}
{provider === 'mailchimp' && ( ', '' ), }} /> )} {ctDashboardLocalizations.plugin_data.is_pro && provider.indexOf('mailerlite') > -1 && ( ', '', '', '' ), }} /> )} {provider.indexOf('demo') > -1 && ( )} {ctDashboardLocalizations.plugin_data.is_pro && provider === 'klaviyo' && ( ', '' ), }} /> )} {ctDashboardLocalizations.plugin_data.is_pro && provider === 'brevo' && ( ', '' ), }} /> )} {ctDashboardLocalizations.plugin_data.is_pro && provider.indexOf('convertkit') > -1 && ( ', '' ), }} /> )} {ctDashboardLocalizations.plugin_data.is_pro && provider === 'activecampaign' && ( ', '' ), }} /> )} {ctDashboardLocalizations.plugin_data.is_pro && provider === 'campaignmonitor' && ( ', '' ), }} /> )} {ctDashboardLocalizations.plugin_data.is_pro && provider === 'emailoctopus' && ( ', '' ), }} /> )} {ctDashboardLocalizations.plugin_data.is_pro && provider === 'mailpoet' && ( ', '' ), }} /> )} {ctDashboardLocalizations.plugin_data.is_pro && provider === 'fluentcrm' && ( ', '' ), }} /> )} {content} ) } export default EditCredentials