PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / dashboard / hooks / useUpgradeCTA.js
presto-player / src / admin / dashboard / hooks Last commit date
test 3 weeks ago useCompleteOnboarding.js 3 weeks ago useDateRangePicker.js 1 month ago useEmail.ts 1 month ago useEngagementChartData.js 1 month ago useLicenseSettings.js 1 month ago useLink.js 1 month ago useMediaDetail.js 1 month ago useMediaLibrary.js 1 month ago useMediaList.ts 1 month ago usePerformanceSettings.js 1 month ago useRegisterActivePage.js 1 month ago useSettingOption.js 1 month ago useSimpleSettingsPage.js 1 month ago useTopPerforming.js 1 month ago useTopVideosPaginated.js 1 month ago useUpgradeCTA.js 1 month ago useUserDetail.js 1 month ago
useUpgradeCTA.js
75 lines
1 import { __ } from '@wordpress/i18n';
2
3 /**
4 * Returns the CTA copy + click handler for the in-app pro-gate surfaces:
5 *
6 * 1. No Pro plugin → "Upgrade Now" → external pricing
7 * 2. Pro plugin active, no license OR key → "Activate License" → in-app license tab
8 * 3. Pro plugin active + licensed → caller should hide the CTA
9 *
10 * State flags (`isLicenseInvalid`, `hasLicenseKey`, `renewLink`) are also
11 * returned so callers that want to *differentiate* the invalid-key state
12 * (e.g. top-of-dashboard banner, WP admin notice) can override the defaults.
13 *
14 * Pass the dashboard's `history` so SPA callers soft-navigate; non-SPA callers
15 * (e.g. the block-editor modal) omit it and get a hard navigation to the same URL.
16 */
17 const useUpgradeCTA = ( history ) => {
18 const data = window?.prestoPlayer || {};
19 const isProPluginActive = !! data.isProPluginActive;
20 const isPremium = !! data.isPremium;
21 const hasLicenseKey = !! data.hasLicenseKey;
22 const isProUnlicensed = isProPluginActive && ! isPremium;
23 const isLicenseInvalid = isProUnlicensed && hasLicenseKey;
24
25 const externalUpgradeLink =
26 data.upgradeLink ||
27 data.upgrade_link ||
28 'https://prestoplayer.com/pricing/';
29
30 const renewLink =
31 data.renewLink || 'https://my.prestomade.com/my-account/';
32
33 const dashboardUrl = data.dashboardUrl || 'admin.php?page=presto-dashboard';
34 const licenseSettingsHref = `${ dashboardUrl }&tab=Settings&section=license`;
35
36 const label = isProUnlicensed
37 ? __( 'Activate License', 'presto-player' )
38 : __( 'Upgrade Now', 'presto-player' );
39
40 const onClick = ( e ) => {
41 if ( isProUnlicensed ) {
42 e?.preventDefault?.();
43 if ( history?.push ) {
44 history.push( { tab: 'Settings', section: 'license' } );
45 } else {
46 window.location.href = licenseSettingsHref;
47 }
48 return;
49 }
50 // Skip when an <a target="_blank" href> already handles the click,
51 // otherwise we'd double-open the pricing page.
52 const target = e?.currentTarget;
53 if ( target?.tagName === 'A' && target.target === '_blank' ) {
54 return;
55 }
56 window.open( externalUpgradeLink, '_blank', 'noopener noreferrer' );
57 };
58
59 return {
60 label,
61 isProUnlicensed,
62 isLicenseInvalid,
63 isProPluginActive,
64 isPremium,
65 hasLicenseKey,
66 href: isProUnlicensed ? licenseSettingsHref : externalUpgradeLink,
67 licenseSettingsHref,
68 externalUpgradeLink,
69 renewLink,
70 onClick,
71 };
72 };
73
74 export default useUpgradeCTA;
75