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
}>
{provider.indexOf('activecampaign') > -1 && (
)}
{provider.indexOf('mailerlite') > -1 && (
)}
{provider.indexOf('convertkit') > -1 && (
)}
{(freeProviders.includes(provider) ||
ctDashboardLocalizations.plugin_data.is_pro) && (
{!['mailpoet', 'fluentcrm'].includes(provider) ? (
) : 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