2022-09-28 22:39:33 -04:00
import PropTypes from 'prop-types' ;
2022-10-08 21:49:51 -04:00
import React from 'react' ;
2019-05-25 15:27:00 -04:00
import { FormattedMessage } from 'react-intl' ;
2022-10-08 21:49:51 -04:00
import { Link , NavLink } from 'react-router-dom' ;
2019-05-25 15:27:00 -04:00
import Icon from 'mastodon/components/icon' ;
2022-10-08 21:49:51 -04:00
import Logo from 'mastodon/components/logo' ;
import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container' ;
import { showTrends , timelinePreview } from 'mastodon/initial_state' ;
2019-05-25 20:55:37 -04:00
import FollowRequestsNavLink from './follow_requests_nav_link' ;
2019-05-25 15:27:00 -04:00
import ListPanel from './list_panel' ;
2022-10-08 21:49:51 -04:00
import NotificationsCounterIcon from './notifications_counter_icon' ;
2022-09-28 22:39:33 -04:00
import SignInBanner from './sign_in_banner' ;
2019-05-25 15:27:00 -04:00
2022-09-28 22:39:33 -04:00
export default class NavigationPanel extends React . Component {
2019-05-25 15:27:00 -04:00
2022-09-28 22:39:33 -04:00
static contextTypes = {
router : PropTypes . object . isRequired ,
identity : PropTypes . object . isRequired ,
} ;
2019-05-25 15:27:00 -04:00
2022-09-28 22:39:33 -04:00
render ( ) {
const { signedIn } = this . context . identity ;
2019-05-25 15:27:00 -04:00
2022-09-28 22:39:33 -04:00
return (
< div className = 'navigation-panel' >
2022-10-04 14:13:23 -04:00
< div className = 'navigation-panel__logo' >
< Link to = '/' className = 'column-link column-link--logo' > < Logo / > < / L i n k >
< hr / >
< / d i v >
2019-05-25 15:27:00 -04:00
2022-09-28 22:39:33 -04:00
{ signedIn && (
< React . Fragment >
< NavLink className = 'column-link column-link--transparent' to = '/home' data - preview - title - id = 'column.home' data - preview - icon = 'home' > < Icon className = 'column-link__icon' id = 'home' fixedWidth / > < FormattedMessage id = 'tabs_bar.home' defaultMessage = 'Home' / > < / N a v L i n k >
< NavLink className = 'column-link column-link--transparent' to = '/notifications' data - preview - title - id = 'column.notifications' data - preview - icon = 'bell' > < NotificationsCounterIcon className = 'column-link__icon' / > < FormattedMessage id = 'tabs_bar.notifications' defaultMessage = 'Notifications' / > < / N a v L i n k >
< FollowRequestsNavLink / >
< / R e a c t . F r a g m e n t >
) }
< NavLink className = 'column-link column-link--transparent' to = '/explore' data - preview - title - id = 'explore.title' data - preview - icon = 'hashtag' > < Icon className = 'column-link__icon' id = 'hashtag' fixedWidth / > < FormattedMessage id = 'explore.title' defaultMessage = 'Explore' / > < / N a v L i n k >
2022-10-08 21:49:51 -04:00
{ signedIn || timelinePreview && (
< >
< NavLink className = 'column-link column-link--transparent' to = '/public/local' data - preview - title - id = 'column.community' data - preview - icon = 'users' > < Icon className = 'column-link__icon' id = 'users' fixedWidth / > < FormattedMessage id = 'tabs_bar.local_timeline' defaultMessage = 'Local' / > < / N a v L i n k >
< NavLink className = 'column-link column-link--transparent' exact to = '/public' data - preview - title - id = 'column.public' data - preview - icon = 'globe' > < Icon className = 'column-link__icon' id = 'globe' fixedWidth / > < FormattedMessage id = 'tabs_bar.federated_timeline' defaultMessage = 'Federated' / > < / N a v L i n k >
< / >
) }
2022-09-28 22:39:33 -04:00
{ ! signedIn && (
2022-10-04 14:13:23 -04:00
< div className = 'navigation-panel__sign-in-banner' >
2022-09-28 22:39:33 -04:00
< hr / >
< SignInBanner / >
2022-10-04 14:13:23 -04:00
< / d i v >
2022-09-28 22:39:33 -04:00
) }
{ signedIn && (
< React . Fragment >
< NavLink className = 'column-link column-link--transparent' to = '/conversations' > < Icon className = 'column-link__icon' id = 'at' fixedWidth / > < FormattedMessage id = 'navigation_bar.direct' defaultMessage = 'Direct messages' / > < / N a v L i n k >
< NavLink className = 'column-link column-link--transparent' to = '/favourites' > < Icon className = 'column-link__icon' id = 'star' fixedWidth / > < FormattedMessage id = 'navigation_bar.favourites' defaultMessage = 'Favourites' / > < / N a v L i n k >
< NavLink className = 'column-link column-link--transparent' to = '/bookmarks' > < Icon className = 'column-link__icon' id = 'bookmark' fixedWidth / > < FormattedMessage id = 'navigation_bar.bookmarks' defaultMessage = 'Bookmarks' / > < / N a v L i n k >
< NavLink className = 'column-link column-link--transparent' to = '/lists' > < Icon className = 'column-link__icon' id = 'list-ul' fixedWidth / > < FormattedMessage id = 'navigation_bar.lists' defaultMessage = 'Lists' / > < / N a v L i n k >
< ListPanel / >
< hr / >
< a className = 'column-link column-link--transparent' href = '/settings/preferences' > < Icon className = 'column-link__icon' id = 'cog' fixedWidth / > < FormattedMessage id = 'navigation_bar.preferences' defaultMessage = 'Preferences' / > < / a >
< a className = 'column-link column-link--transparent' href = '/relationships' > < Icon className = 'column-link__icon' id = 'users' fixedWidth / > < FormattedMessage id = 'navigation_bar.follows_and_followers' defaultMessage = 'Follows and followers' / > < / a >
< / R e a c t . F r a g m e n t >
) }
2022-10-04 14:13:23 -04:00
< div className = 'navigation-panel__legal' >
< hr / >
< NavLink className = 'column-link column-link--transparent' to = '/about' > < Icon className = 'column-link__icon' id = 'ellipsis-h' fixedWidth / > < FormattedMessage id = 'navigation_bar.about' defaultMessage = 'About' / > < / N a v L i n k >
< / d i v >
2022-09-28 22:39:33 -04:00
{ showTrends && (
< React . Fragment >
< div className = 'flex-spacer' / >
< TrendsContainer / >
< / R e a c t . F r a g m e n t >
) }
< / d i v >
) ;
}
}