import { createElement, Component, useEffect, useState, Fragment, } from '@wordpress/element' import useProExtensionInFree from './useProExtensionInFree' import { flushPermalinks } from '../../flushPermalinks' const useActivationAction = (extension, doneCb = () => {}) => { const [isLoading, setIsLoading] = useState(false) const { isProInFree, showNotice, content } = useProExtensionInFree(extension) const makeAction = async (cb = () => {}, useFeatures = true) => { if (isProInFree) { if (useFeatures && extension.config.features) { cb() return } showNotice() return } cb() if (useFeatures) { const body = new FormData() body.append('ext', extension.name) body.append( 'action', extension.__object ? 'blocksy_extension_deactivate' : 'blocksy_extension_activate' ) body.append( 'nonce', ctDashboardLocalizations.dashboard_actions_nonce ) setIsLoading(true) try { await fetch(ctDashboardLocalizations.ajax_url, { method: 'POST', body, }) if (extension.config.require_refresh) { flushPermalinks() } doneCb() } catch (e) {} // await new Promise(r => setTimeout(() => r(), 1000)) setIsLoading(false) } } return [isLoading, makeAction, content] } export default useActivationAction