import { Button } from '@wordpress/components';
import { useEffect, useState } from '@wordpress/element';
import { __, sprintf } from '@wordpress/i18n';
import { Icon, check, warning } from '@wordpress/icons';
import { installPlugin, activatePlugin } from '@shared/api/wp';
import { useActivityStore } from '@shared/state/activity';
export const RecommendationCard = ({ recommendation }) => {
if (recommendation.pluginSlug) {
return ;
}
return ;
};
const LinkCard = ({ recommendation }) => {
const { by, slug, description, image, title, linkType } = recommendation;
const { incrementActivity } = useActivityStore();
if (!recommendation?.[linkType]) return null;
return (
incrementActivity(`recommendations-${slug}`)}
target="_blank"
rel="noopener noreferrer"
className="cursor-pointer rounded border border-gray-200 bg-transparent p-4 text-left text-base no-underline hover:border-design-main hover:bg-gray-50 rtl:text-right">
{title}
{by &&
{by}
}
{description}
);
};
const InstallCard = ({ recommendation }) => {
const { by, slug, description, image, title, pluginSlug } = recommendation;
const { incrementActivity } = useActivityStore();
return (
incrementActivity(`recommendations-install-${slug}`)}
className="rounded border border-gray-200 bg-transparent p-4 text-left text-base rtl:text-right">
{title}
{by &&
{by}
}
{description}
);
};
const InstallButton = ({ pluginSlug }) => {
const [installing, setInstalling] = useState(false);
const [status, setStatus] = useState('');
useEffect(() => {
const { installedPlugins, activePlugins } = window.extSharedData;
const hasPlugin = (p) => p?.includes(pluginSlug);
const installed = Object.values(installedPlugins).some(hasPlugin);
const active = Object.values(activePlugins).some(hasPlugin);
if (installed) setStatus('inactive');
if (active) setStatus('active');
}, [pluginSlug, setStatus]);
const handleClick = async () => {
setInstalling(true);
try {
await installPlugin(pluginSlug);
} catch (_) {
// Fail silently if the plugin is already installed
}
try {
await activatePlugin(pluginSlug);
setStatus('active');
} catch (_) {
setStatus('error');
setTimeout(() => {
setStatus(status);
}, 1500);
}
setInstalling(false);
};
if (status === 'error') {
return (
<>
{__('Error', 'extendify-local')}
>
);
}
if (status === 'active') {
return (
<>
{__('Active', 'extendify-local')}
>
);
}
if (status === 'inactive') {
return (
{installing
? __('Activating...', 'extendify-local')
: __('Activate', 'extendify-local')}
);
}
return (
{installing
? __('Installing...', 'extendify-local')
: __('Install Now', 'extendify-local')}
);
};
Get Pro Addon to unlock more features
The features below are available in Nextend Social Login Pro Addon. Get it today and tweak the awesome settings.
If you already have a license, you can Authorize your Pro Addon. Otherwise you can purchase it using the button below.
Buy Pro Addon
Authorize Pro Addon
{"id":1585,"date":"2024-05-31T13:13:41","date_gmt":"2024-05-31T13:13:41","guid":{"rendered":"https:\/\/dispenseroo.store\/?page_id=1585"},"modified":"2024-09-12T17:53:02","modified_gmt":"2024-09-12T17:53:02","slug":"vaporizers-catridges","status":"publish","type":"page","link":"https:\/\/dispenseroo.store\/vaporizers-catridges\/","title":{"rendered":"Vaporizers & Catridges"},"content":{"rendered":"\n\t\n\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\n\n\t\t<\/div>\n\n\t\t\n\n\t\t
\n\t\t\t\n\n
\n\n\n\t
\n\t\t\t\t
\n\t\t\t\n\t\t\t\n\n
Cannabis vapes offer unique advantages. Easy, discreet, and portable, concentrate cartridges and vape pens are available in a nearly endless selection of types and varieties. They are especially cost-effective and provide the ability to focus on the strain\u2019s distinctive flavor profile and characteristics. There\u2019s none of the smoke, lingering aroma, or extra gear required, yet you get the benefits of customized and precise dosing.<\/p>\n\t
\n\t\t\n\n
GET THE VAPES AND CARTRIDGES YOU LOVE FROM MOUNTBLISS<\/h2>\n\t\t\n