import React from 'react'; import { useHistory } from 'react-router-dom'; import { Column, Layout, Tabs } from 'soapbox/components/ui'; import PlaceholderStatus from 'soapbox/features/placeholder/components/placeholder-status'; import LinkFooter from 'soapbox/features/ui/components/link-footer'; import BundleContainer from 'soapbox/features/ui/containers/bundle-container'; import { EventHeader, CtaBanner, SignUpPanel, TrendsPanel, WhoToFollowPanel, } from 'soapbox/features/ui/util/async-components'; import { useAppSelector, useFeatures } from 'soapbox/hooks'; import { makeGetStatus } from 'soapbox/selectors'; const getStatus = makeGetStatus(); interface IEventPage { params?: { statusId?: string, }, } const EventPage: React.FC = ({ params, children }) => { const me = useAppSelector(state => state.me); const features = useFeatures(); const history = useHistory(); const statusId = params?.statusId!; const status = useAppSelector(state => getStatus(state, { id: statusId })); const event = status?.event; if (status && !event) { history.push(`/@${status.getIn(['account', 'acct'])}/posts/${status.id}`); return ( ); } const pathname = history.location.pathname; const activeItem = pathname.endsWith('/discussion') ? 'discussion' : 'info'; const tabs = status ? [ { text: 'Information', to: `/@${status.getIn(['account', 'acct'])}/events/${status.id}`, name: 'info', }, { text: 'Discussion', to: `/@${status.getIn(['account', 'acct'])}/events/${status.id}/discussion`, name: 'discussion', }, ] : []; const showTabs = !['/participations', 'participation_requests'].some(path => pathname.endsWith(path)); return ( <>
{Component => } {status && showTabs && ( )} {children}
{!me && ( {Component => } )}
{!me && ( {Component => } )} {features.trends && ( {Component => } )} {features.suggestions && ( {Component => } )} ); }; export default EventPage;