import { Button } from '@wordpress/components' import { useState, useEffect, useRef } from '@wordpress/element' import { __ } from '@wordpress/i18n' import { Icon } from '@wordpress/icons' import { General } from '@library/api/General' import { useGlobalStore } from '@library/state/GlobalState' import { useUserStore } from '@library/state/User' import { openModal } from '@library/util/general' import { brandMark } from './icons' import { NewImportsPopover } from './popovers/NewImportsPopover' export const MainButtonWrapper = () => { const [showTooltip, setShowTooltip] = useState(false) const once = useRef(false) const buttonRef = useRef() const loggedIn = useUserStore((state) => state.apiKey.length) const hasImported = useUserStore((state) => state.imports > 0) const open = useGlobalStore((state) => state.open) const hasPendingNewImports = useUserStore( (state) => state.allowedImports === 0, ) const handleTooltipClose = async () => { await General.ping('mb-tooltip-closed') setShowTooltip(false) // If they close the tooltip, we can set the allowed imports // to -1 and when it opens it will fetch and update. Meanwhile, // -1 will be ignored by the this component. useUserStore.setState({ allowedImports: -1, }) } useEffect(() => { if (open) { setShowTooltip(false) once.current = true } if (!loggedIn && hasPendingNewImports && hasImported) { once.current || setShowTooltip(true) once.current = true } }, [loggedIn, hasPendingNewImports, hasImported, open]) return ( <> {showTooltip && ( { await General.ping('mb-tooltip-pressed') openModal('main-button-tooltip') }} onPressX={handleTooltipClose} /> )} > ) } const MainButton = ({ buttonRef, text }) => { return ( openModal('main-button')} id="extendify-templates-inserter-btn" icon={ }> {text} ) } export const CtaButton = () => { return ( openModal('patterns-cta')} isSecondary> {__('Discover patterns in Extendify Library', 'extendify')} ) }