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 (
<>