import { createElement, Component, useEffect, Fragment, useState, } from '@wordpress/element' import { __ } from 'ct-i18n' import classnames from 'classnames' import SinglePremiumPlugin from '../components/SinglePremiumPlugin' import { Transition, animated } from 'react-spring' import SubmitSupport from '../components/SubmitSupport' let plugins_status_cache = null let staticSource = ctDashboardLocalizations.clean_install_plugins export const pluginsWithNames = () => Object.values(staticSource).map((plugin, index) => { plugin['name'] = Object.keys(staticSource)[index] return plugin }) const RecommendedPlugins = () => { const [isLoading, setIsLoading] = useState(!plugins_status_cache) const [plugins_status, setPluginStatus] = useState( plugins_status_cache || [] ) const plugins = pluginsWithNames() const syncPlugins = async (verbose = false) => { if (verbose) { setIsLoading(true) } const body = new FormData() body.append('action', 'get_premium_plugins_status') body.append('nonce', ctDashboardLocalizations.dashboard_actions_nonce) try { const response = await fetch(ctDashboardLocalizations.ajax_url, { method: 'POST', body, }) if (response.status === 200) { const { success, data } = await response.json() if (success) { setPluginStatus(data) plugins_status_cache = data } } } catch (e) {} setIsLoading(false) } useEffect(() => { syncPlugins(!plugins_status_cache) }, []) return (