kollapsminoriteten/wp-content/plugins/blocksy-companion/static/js/dashboard/helpers/useActivationAction.js

72 lines
1.3 KiB
JavaScript

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