import { __, sprintf } from '@wordpress/i18n' import { Button } from '@wordpress/components' import { useUserStore } from '../state/User' import { useState, useRef } from '@wordpress/element' import { User as UserApi } from '../api/User' import { useGlobalStore } from '../state/GlobalState' import { Modal } from '../components/modals/Modal' import { brandMark } from '../components/icons' import { Icon } from '@wordpress/icons' import Primary from '../components/buttons/Primary' import { safeHTML } from '@wordpress/dom' export default function NeedsRegistrationModal({ finished, resetMiddleware }) { const [email, setEmail] = useState('') const remainingImports = useUserStore((state) => state.remainingImports) const emailRef = useRef(null) const setCurrentModal = useGlobalStore((state) => state.setCurrentModal) const registerAndContinue = async (event) => { event.preventDefault() const newAllowedImports = Number(useUserStore.getState().allowedImports) + 10 useUserStore.setState({ registration: { email }, allowedImports: newAllowedImports, }) await UserApi.registerMailingList(email) finished() } const optOut = () => { useUserStore.setState({ registration: { optedOut: true }, }) finished() } return ( { setCurrentModal(null) resetMiddleware() }} ref={emailRef}>

{remainingImports() == 1 ? __('This is your last import', 'extendify') : sprintf( __('You now have %s imports left', 'extendify'), remainingImports(), )}

tags __( "Subscribe and %1$swe'll send you 10 more%2$s. Plus you'll get updates and special offers from us fine folks at Extendify.", 'extendify', ), '', '', ), ), }}>

setEmail(event.target.value)} type="email" className="text-sm min-h-0 p-2 border-2 border-gray-900 rounded-md w-full" placeholder={__( 'Enter your email address', 'extendify', )} />
{__('Submit', 'extendify')}
) } const pass = () => { const userState = useUserStore.getState() const remainingImports = userState?.remainingImports() // On the last import, show the modal if they opted out if (remainingImports === 1 && userState?.registration?.optedOut) { return false } return ( userState?.registration?.email?.length || // Already registered userState?.apiKey?.length || // Already a member userState?.registration?.optedOut || // Already opted out userState?.imports === 0 // Hasn't imported yet ) } export function check() { return { id: 'NeedsRegistrationModal', pass: pass(), allow() {}, deny() { return new Promise((resolve, reject) => { useGlobalStore.setState({ currentModal: ( ), }) }) }, } }