Skip to content

Commit

Permalink
Add plugins page
Browse files Browse the repository at this point in the history
Signed-off-by: soupette <cyril@strapi.io>
  • Loading branch information
soupette committed Nov 17, 2021
1 parent 5767590 commit ed20b01
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 25 deletions.
111 changes: 111 additions & 0 deletions packages/core/admin/admin/src/pages/InstalledPluginsPage/Plugins.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
import React from 'react';
import { useQuery } from 'react-query';
import { useIntl } from 'react-intl';
import { LoadingIndicatorPage, useNotification, useFocusWhenNavigate } from '@strapi/helper-plugin';
import { Layout, HeaderLayout, ContentLayout } from '@strapi/design-system/Layout';
import { Main } from '@strapi/design-system/Main';
import { useNotifyAT } from '@strapi/design-system/LiveRegions';
import { Typography } from '@strapi/design-system/Typography';
import { Table, Thead, Tbody, Tr, Td, Th } from '@strapi/design-system/Table';
import { fetchPlugins } from './utils/api';

const Plugins = () => {
const { formatMessage } = useIntl();
useFocusWhenNavigate();
const { notifyStatus } = useNotifyAT();
const toggleNotification = useNotification();

const title = formatMessage({
id: 'app.components.ListPluginsPage.title',
defaultMessage: 'Plugins',
});

const notifyLoad = () => {
notifyStatus(
formatMessage(
{
id: 'app.utils.notify.data-loaded',
defaultMessage: 'The {target} has loaded',
},
{ target: title }
)
);
};

const { status, data } = useQuery('list-plugins', () => fetchPlugins(notifyLoad), {
onError: () => {
toggleNotification({
type: 'warning',
message: { id: 'notification.error', defaultMessage: 'An error occured' },
});
},
});

const isLoading = status !== 'success' && status !== 'error';

if (isLoading) {
return (
<Layout>
<Main aria-busy>
<LoadingIndicatorPage />
</Main>
</Layout>
);
}

return (
<Layout>
<Main>
<HeaderLayout
title={title}
subtitle={formatMessage({
id: 'app.components.ListPluginsPage.description',
defaultMessage: 'List of the installed plugins in the project.',
})}
/>
<ContentLayout>
<Table colCount={2} rowCount={data?.plugins.length + 1}>
<Thead>
<Tr>
<Th>
<Typography variant="sigma" textColor="neutral600">
{formatMessage({
id: 'Settings.roles.list.header.name',
defaultMessage: 'Name',
})}
</Typography>
</Th>
<Th>
<Typography variant="sigma" textColor="neutral600">
{formatMessage({
id: 'Settings.roles.list.header.description',
defaultMessage: 'description',
})}
</Typography>
</Th>
</Tr>
</Thead>
<Tbody>
{data.plugins.map(({ name, displayName, description }) => {
return (
<Tr key={name}>
<Td>
<Typography textColor="neutral800" variant="omega" fontWeight="bold">
{displayName}
</Typography>
</Td>
<Td>
<Typography textColor="neutral800">{description}</Typography>
</Td>
</Tr>
);
})}
</Tbody>
</Table>
</ContentLayout>
</Main>
</Layout>
);
};

export default Plugins;
29 changes: 4 additions & 25 deletions packages/core/admin/admin/src/pages/InstalledPluginsPage/index.js
Original file line number Diff line number Diff line change
@@ -1,34 +1,13 @@
import React from 'react';
import { CheckPagePermissions, NoContent } from '@strapi/helper-plugin';
import { useIntl } from 'react-intl';
import { Layout, HeaderLayout, ContentLayout } from '@strapi/design-system/Layout';
import { Main } from '@strapi/design-system/Main';
import { CheckPagePermissions } from '@strapi/helper-plugin';

import adminPermissions from '../../permissions';
import Plugins from './Plugins';

const InstalledPluginsPage = () => {
const { formatMessage } = useIntl();

return (
<CheckPagePermissions permissions={adminPermissions.marketplace.main}>
<Layout>
<Main>
<HeaderLayout
title={formatMessage({
id: 'app.components.ListPluginsPage.helmet.title',
defaultMessage: 'List plugins',
})}
/>
<ContentLayout>
<NoContent
content={{
id: 'coming.soon',
defaultMessage:
'This content is currently under construction and will be back in a few weeks!',
}}
/>
</ContentLayout>
</Main>
</Layout>
<Plugins />
</CheckPagePermissions>
);
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { axiosInstance } from '../../../core/utils';

const fetchPlugins = async notify => {
const { data } = await axiosInstance.get('/admin/plugins');

notify();

return data;
};

export { fetchPlugins };

0 comments on commit ed20b01

Please sign in to comment.