PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.2
Presto Player v4.3.2
4.3.2 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 1 month ago useCompleteOnboarding.js 1 month ago useDateRangePicker.js 2 months ago useEmail.ts 2 months ago useEngagementChartData.js 2 months ago useLicenseSettings.js 2 months ago useLink.js 2 months ago useMediaDetail.js 2 months ago useMediaLibrary.js 2 months ago useMediaList.ts 1 month ago usePerformanceSettings.js 2 months ago useRegisterActivePage.js 2 months ago useSettingOption.js 2 months ago useSimpleSettingsPage.js 2 months ago useTopPerforming.js 2 months ago useTopVideosPaginated.js 2 months ago useUpgradeCTA.js 2 months ago useUserDetail.js 2 months 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