2022-09-29 02:39:33 +00:00
import PropTypes from 'prop-types' ;
2022-10-09 01:49:51 +00:00
import React from 'react' ;
2019-05-25 19:27:00 +00:00
import { FormattedMessage } from 'react-intl' ;
2022-10-09 01:49:51 +00:00
import { Link , NavLink } from 'react-router-dom' ;
2019-05-25 19:27:00 +00:00
import Icon from 'flavours/glitch/components/icon' ;
2022-10-09 01:49:51 +00:00
import TrendsContainer from 'flavours/glitch/features/getting_started/containers/trends_container' ;
import { showTrends , timelinePreview } from 'flavours/glitch/initial_state' ;
2019-05-26 00:55:37 +00:00
import FollowRequestsNavLink from './follow_requests_nav_link' ;
2019-05-25 19:27:00 +00:00
import ListPanel from './list_panel' ;
2022-10-09 01:49:51 +00:00
import NotificationsCounterIcon from './notifications_counter_icon' ;
2022-09-29 02:39:33 +00:00
import SignInBanner from './sign_in_banner' ;
2022-10-09 01:49:51 +00:00
import { preferencesLink , relationshipsLink } from 'flavours/glitch/utils/backend_links' ;
2019-05-25 19:27:00 +00:00
2022-09-29 02:39:33 +00:00
export default class NavigationPanel extends React . Component {
2019-05-25 19:27:00 +00:00
2022-09-29 02:39:33 +00:00
static contextTypes = {
router : PropTypes . object . isRequired ,
identity : PropTypes . object . isRequired ,
} ;
2019-05-25 19:27:00 +00:00
2022-09-29 02:39:33 +00:00
static propTypes = {
onOpenSettings : PropTypes . func ,
} ;
2019-05-25 19:27:00 +00:00
2022-09-29 02:39:33 +00:00
render ( ) {
const { signedIn } = this . context . identity ;
const { onOpenSettings } = this . props ;
2019-08-06 15:57:52 +00:00
2022-09-29 02:39:33 +00:00
return (
< div className = 'navigation-panel' >
{ 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 >
) }
2019-05-25 19:27:00 +00:00
2022-10-09 01:49:51 +00:00
< 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 >
{ 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-29 02:39:33 +00:00
{ ! signedIn && (
2022-10-04 18:13:23 +00:00
< div className = 'navigation-panel__sign-in-banner' >
2022-09-29 02:39:33 +00:00
< hr / >
< SignInBanner / >
2022-10-04 18:13:23 +00:00
< / d i v >
2022-09-29 02:39:33 +00:00
) }
{ signedIn && (
< React . Fragment >
< NavLink className = 'column-link column-link--transparent' to = '/conversations' > < Icon className = 'column-link__icon' id = 'envelope' fixedWidth / > < FormattedMessage id = 'navigation_bar.direct' defaultMessage = 'Direct messages' / > < / 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 / >
{ ! ! preferencesLink && < a className = 'column-link column-link--transparent' href = { preferencesLink } target = '_blank' > < Icon className = 'column-link__icon' id = 'cog' fixedWidth / > < FormattedMessage id = 'navigation_bar.preferences' defaultMessage = 'Preferences' / > < / a > }
< a className = 'column-link column-link--transparent' href = '#' onClick = { onOpenSettings } > < Icon className = 'column-link__icon' id = 'cogs' fixedWidth / > < FormattedMessage id = 'navigation_bar.app_settings' defaultMessage = 'App settings' / > < / a >
{ ! ! relationshipsLink && < a className = 'column-link column-link--transparent' href = { relationshipsLink } target = '_blank' > < 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 18:13:23 +00: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-29 02:39:33 +00: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 >
) ;
}
}