|
@@ -1,9 +1,10 @@
|
|
|
import React from 'react';
|
|
import React from 'react';
|
|
|
|
|
|
|
|
import { useTranslation } from 'next-i18next';
|
|
import { useTranslation } from 'next-i18next';
|
|
|
|
|
+import dynamic from 'next/dynamic';
|
|
|
import { Spinner } from 'reactstrap';
|
|
import { Spinner } from 'reactstrap';
|
|
|
|
|
|
|
|
-import { useSWRxAdminPlugins } from '../../../stores/admin-plugins';
|
|
|
|
|
|
|
+import { useSWRxAdminPlugins, usePluginDeleteModal } from '../../../stores/admin-plugins';
|
|
|
|
|
|
|
|
import { PluginCard } from './PluginCard';
|
|
import { PluginCard } from './PluginCard';
|
|
|
import { PluginInstallerForm } from './PluginInstallerForm';
|
|
import { PluginInstallerForm } from './PluginInstallerForm';
|
|
@@ -18,8 +19,10 @@ const Loading = (): JSX.Element => {
|
|
|
|
|
|
|
|
export const PluginsExtensionPageContents = (): JSX.Element => {
|
|
export const PluginsExtensionPageContents = (): JSX.Element => {
|
|
|
const { t } = useTranslation('admin');
|
|
const { t } = useTranslation('admin');
|
|
|
-
|
|
|
|
|
|
|
+ const PluginDeleteModal = dynamic(() => import('./PluginDeleteModal')
|
|
|
|
|
+ .then(mod => mod.PluginDeleteModal), { ssr: false });
|
|
|
const { data, mutate } = useSWRxAdminPlugins();
|
|
const { data, mutate } = useSWRxAdminPlugins();
|
|
|
|
|
+ const { open: openPluginDeleteModal } = usePluginDeleteModal();
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
<div>
|
|
<div>
|
|
@@ -45,28 +48,22 @@ export const PluginsExtensionPageContents = (): JSX.Element => {
|
|
|
{ data.plugins.length === 0 && (
|
|
{ data.plugins.length === 0 && (
|
|
|
<div>{t('plugins.plugin_is_not_installed')}</div>
|
|
<div>{t('plugins.plugin_is_not_installed')}</div>
|
|
|
)}
|
|
)}
|
|
|
- { data.plugins.map((plugin) => {
|
|
|
|
|
- const pluginId = plugin._id;
|
|
|
|
|
- const pluginName = plugin.meta.name;
|
|
|
|
|
- const pluginUrl = plugin.origin.url;
|
|
|
|
|
- const pluginIsEnabled = plugin.isEnabled;
|
|
|
|
|
- const pluginDiscription = plugin.meta.desc;
|
|
|
|
|
- return (
|
|
|
|
|
- <PluginCard
|
|
|
|
|
- key={pluginId}
|
|
|
|
|
- id={pluginId}
|
|
|
|
|
- name={pluginName}
|
|
|
|
|
- url={pluginUrl}
|
|
|
|
|
- isEnalbed={pluginIsEnabled}
|
|
|
|
|
- desc={pluginDiscription}
|
|
|
|
|
- mutate={mutate}
|
|
|
|
|
- />
|
|
|
|
|
- );
|
|
|
|
|
- })}
|
|
|
|
|
|
|
+ {data.plugins.map(plugin => (
|
|
|
|
|
+ <PluginCard
|
|
|
|
|
+ key={plugin._id}
|
|
|
|
|
+ id={plugin._id}
|
|
|
|
|
+ name={plugin.meta.name}
|
|
|
|
|
+ url={plugin.origin.url}
|
|
|
|
|
+ isEnalbed={plugin.isEnabled}
|
|
|
|
|
+ desc={plugin.meta.desc}
|
|
|
|
|
+ onDelete={() => openPluginDeleteModal(plugin)}
|
|
|
|
|
+ />
|
|
|
|
|
+ ))}
|
|
|
</div>
|
|
</div>
|
|
|
)}
|
|
)}
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <PluginDeleteModal />
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
);
|
|
);
|