67 lines
1.5 KiB
JavaScript
67 lines
1.5 KiB
JavaScript
import { useContext, createElement, useState } from '@wordpress/element'
|
|
import { __, sprintf } from 'ct-i18n'
|
|
|
|
import DashboardContext from '../DashboardContext'
|
|
|
|
import useUpsellModal from './useUpsellModal'
|
|
|
|
const getLowestPlan = () => {}
|
|
|
|
const useProExtensionInFree = (extension, args = {}) => {
|
|
args = {
|
|
// pro-ext | pro
|
|
strategy: 'pro-ext',
|
|
modalTitle: __('This is a Pro extension', 'blocksy-companion'),
|
|
...args,
|
|
}
|
|
|
|
const [isDisplayed, setIsDisplayed] = useState(false)
|
|
const isPro = ctDashboardLocalizations.plugin_data.is_pro
|
|
|
|
const { history } = useContext(DashboardContext)
|
|
|
|
const isProInFree = !isPro && extension.config.pro
|
|
|
|
const currentPlan = ctDashboardLocalizations.plugin_data.current_plan
|
|
|
|
let requiredPlan = 'personal'
|
|
|
|
if (extension.config.plans) {
|
|
if (extension.config.plans.includes('agency_v2')) {
|
|
requiredPlan = 'agency'
|
|
}
|
|
|
|
if (extension.config.plans.includes('professional_v2')) {
|
|
requiredPlan = 'professional'
|
|
}
|
|
}
|
|
|
|
const { content, showNotice } = useUpsellModal({
|
|
currentPlan,
|
|
requiredPlan,
|
|
...args,
|
|
})
|
|
|
|
return {
|
|
isPro,
|
|
isProInFree:
|
|
(!isPro && extension.config.pro) ||
|
|
(extension.config.plans &&
|
|
extension.config.plans.length &&
|
|
!extension.config.plans.includes(currentPlan)),
|
|
|
|
showNotice,
|
|
|
|
content:
|
|
(args.strategy === 'pro-ext' && isProInFree) ||
|
|
(args.strategy === 'pro' && !isPro) ||
|
|
(extension.config.plans &&
|
|
extension.config.plans.length &&
|
|
!extension.config.plans.includes(currentPlan))
|
|
? content
|
|
: null,
|
|
}
|
|
}
|
|
|
|
export default useProExtensionInFree
|