AdminTabs: get activeItem from match

This commit is contained in:
Alex Gleason 2022-04-28 15:49:29 -05:00
parent 85424b9acf
commit 5c821488dc
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
2 changed files with 8 additions and 10 deletions

View File

@ -1,5 +1,6 @@
import React from 'react'; import React from 'react';
import { useIntl, defineMessages } from 'react-intl'; import { useIntl, defineMessages } from 'react-intl';
import { useRouteMatch } from 'react-router-dom';
import { Tabs } from 'soapbox/components/ui'; import { Tabs } from 'soapbox/components/ui';
import { useAppSelector } from 'soapbox/hooks'; import { useAppSelector } from 'soapbox/hooks';
@ -10,33 +11,30 @@ const messages = defineMessages({
waitlist: { id: 'admin_nav.awaiting_approval', defaultMessage: 'Waitlist' }, waitlist: { id: 'admin_nav.awaiting_approval', defaultMessage: 'Waitlist' },
}); });
interface IAdminTabs { const AdminTabs: React.FC = () => {
activeItem: 'dashboard' | 'reports' | 'approval',
}
const AdminTabs: React.FC<IAdminTabs> = ({ activeItem }) => {
const intl = useIntl(); const intl = useIntl();
const match = useRouteMatch();
const approvalCount = useAppSelector(state => state.admin.awaitingApproval.count()); const approvalCount = useAppSelector(state => state.admin.awaitingApproval.count());
const reportsCount = useAppSelector(state => state.admin.openReports.count()); const reportsCount = useAppSelector(state => state.admin.openReports.count());
const tabs = [{ const tabs = [{
name: 'dashboard', name: '/admin',
text: intl.formatMessage(messages.dashboard), text: intl.formatMessage(messages.dashboard),
to: '/admin', to: '/admin',
}, { }, {
name: 'reports', name: '/admin/reports',
text: intl.formatMessage(messages.reports), text: intl.formatMessage(messages.reports),
to: '/admin/reports', to: '/admin/reports',
count: reportsCount, count: reportsCount,
}, { }, {
name: 'approval', name: '/admin/approval',
text: intl.formatMessage(messages.waitlist), text: intl.formatMessage(messages.waitlist),
to: '/admin/approval', to: '/admin/approval',
count: approvalCount, count: approvalCount,
}]; }];
return <Tabs items={tabs} activeItem={activeItem} />; return <Tabs items={tabs} activeItem={match.path} />;
}; };
export default AdminTabs; export default AdminTabs;

View File

@ -23,7 +23,7 @@ const Admin: React.FC = () => {
return ( return (
<Column label={intl.formatMessage(messages.heading)} withHeader={false}> <Column label={intl.formatMessage(messages.heading)} withHeader={false}>
<AdminTabs activeItem='dashboard' /> <AdminTabs />
<Switch> <Switch>
<Route path='/admin' exact component={Dashboard} /> <Route path='/admin' exact component={Dashboard} />