gab-social/app/javascript/gabsocial/components/popover/nav_settings_popover.js

85 lines
2.4 KiB
JavaScript

import React from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
import { defineMessages, injectIntl } from 'react-intl'
import { closePopover } from '../../actions/popover'
import { openModal } from '../../actions/modal'
import { meUsername } from '../../initial_state'
import { MODAL_DISPLAY_OPTIONS } from '../../constants'
import PopoverLayout from './popover_layout'
import List from '../list'
class NavSettingsPopover extends React.PureComponent {
handleOnClosePopover = () => {
this.props.onClosePopover()
}
handleOpenDisplayOptions = () => {
this.props.onOpenDisplayOptions()
this.handleOnClosePopover()
}
render() {
const { intl, isXS } = this.props
if (isXS) return null
return (
<PopoverLayout width={240}>
<List
size='small'
scrollKey='profile_options'
items={[
{
title: intl.formatMessage(messages.profile),
to: `/${meUsername}`,
onClick: this.handleOnClosePopover,
},
{
title: 'Display options',
onClick: this.handleOpenDisplayOptions,
},
{
title: intl.formatMessage(messages.help),
href: 'https://help.gab.com',
},
{
title: intl.formatMessage(messages.settings),
href: '/settings/preferences',
},
{
title: intl.formatMessage(messages.logout),
href: '/auth/sign_out',
},
]}
/>
</PopoverLayout>
)
}
}
const messages = defineMessages({
profile: { id: 'account.profile', defaultMessage: 'Profile' },
display: { id: 'display_options', defaultMessage: 'Display Options' },
help: { id: 'getting_started.help', defaultMessage: 'Help' },
settings: { id: 'settings', defaultMessage: 'Settings' },
logout: { 'id': 'confirmations.logout.confirm', 'defaultMessage': 'Log out' },
})
const mapDispatchToProps = (dispatch) => ({
onClosePopover() {
dispatch(closePopover())
},
onOpenDisplayOptions() {
dispatch(openModal(MODAL_DISPLAY_OPTIONS))
}
})
NavSettingsPopover.propTypes = {
intl: PropTypes.object.isRequired,
onClosePopover: PropTypes.func.isRequired,
isXS: PropTypes.bool,
}
export default injectIntl(connect(null, mapDispatchToProps)(NavSettingsPopover))