= ({ plugin, openModal, pluginCenterAuthInfo }) => {
const [t] = useTranslation("admin");
const isInstallable = plugin._links.install && (plugin._links.install as Link).href;
const isUpdatable = plugin._links.update && (plugin._links.update as Link).href;
const isUninstallable = plugin._links.uninstall && (plugin._links.uninstall as Link).href;
const isCloudoguPlugin = plugin.type === "CLOUDOGU";
const isDefaultPluginCenterLoginAvailable = pluginCenterAuthInfo?.default && !!pluginCenterAuthInfo?._links?.login;
const evaluateAction = () => {
if (isInstallable) {
return () => openModal({ plugin, action: PluginAction.INSTALL });
}
if (isCloudoguPlugin && isDefaultPluginCenterLoginAvailable) {
return () => openModal({ plugin, action: PluginAction.CLOUDOGU });
}
return undefined;
};
const pendingSpinner = () => (
);
const actionBar = () => (
{isCloudoguPlugin && isDefaultPluginCenterLoginAvailable && (
openModal({ plugin, action: PluginAction.CLOUDOGU })}>
)}
{isInstallable && (
openModal({ plugin, action: PluginAction.INSTALL })}>
)}
{isUninstallable && (
openModal({ plugin, action: PluginAction.UNINSTALL })}>
)}
{isUpdatable && (
openModal({ plugin, action: PluginAction.UPDATE })}>
)}
);
return (
<>
}
title={plugin.displayName ? {plugin.displayName} : {plugin.name}}
description={plugin.description}
contentRight={plugin.pending || plugin.markedForUninstall ? pendingSpinner() : actionBar()}
footerLeft={{plugin.version}}
footerRight={null}
/>
{isCloudoguPlugin ? : null}
{plugin.author}
>
);
};
export default PluginEntry;