2019-08-26 12:24:10 -04:00
import { connect } from 'react-redux' ;
2019-05-27 15:58:41 -04:00
import React from 'react' ;
import PropTypes from 'prop-types' ;
2019-08-26 12:24:10 -04:00
import { FormattedMessage , defineMessages , injectIntl } from 'react-intl' ;
2019-05-27 15:58:41 -04:00
import { Link } from 'react-router-dom' ;
2021-06-27 16:31:28 -04:00
import { invitesEnabled , limitedFederationMode , version , repository , source _url } from 'mastodon/initial_state' ;
2019-08-26 12:24:10 -04:00
import { logOut } from 'mastodon/utils/log_out' ;
import { openModal } from 'mastodon/actions/modal' ;
2019-05-27 15:58:41 -04:00
2019-08-26 12:24:10 -04:00
const messages = defineMessages ( {
logoutMessage : { id : 'confirmations.logout.message' , defaultMessage : 'Are you sure you want to log out?' } ,
logoutConfirm : { id : 'confirmations.logout.confirm' , defaultMessage : 'Log out' } ,
} ) ;
const mapDispatchToProps = ( dispatch , { intl } ) => ( {
onLogout ( ) {
dispatch ( openModal ( 'CONFIRM' , {
message : intl . formatMessage ( messages . logoutMessage ) ,
confirm : intl . formatMessage ( messages . logoutConfirm ) ,
2021-08-06 06:14:13 -04:00
closeWhenConfirm : false ,
2019-08-26 12:24:10 -04:00
onConfirm : ( ) => logOut ( ) ,
} ) ) ;
} ,
} ) ;
export default @ injectIntl
@ connect ( null , mapDispatchToProps )
class LinkFooter extends React . PureComponent {
static propTypes = {
withHotkeys : PropTypes . bool ,
onLogout : PropTypes . func . isRequired ,
intl : PropTypes . object . isRequired ,
} ;
handleLogoutClick = e => {
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
this . props . onLogout ( ) ;
2019-05-27 15:58:41 -04:00
2019-08-26 12:24:10 -04:00
return false ;
}
render ( ) {
const { withHotkeys } = this . props ;
return (
< div className = 'getting-started__footer' >
< ul >
{ invitesEnabled && < li > < a href = '/invites' target = '_blank' > < FormattedMessage id = 'getting_started.invite' defaultMessage = 'Invite people' / > < / a > · < / l i > }
{ withHotkeys && < li > < Link to = '/keyboard-shortcuts' > < FormattedMessage id = 'navigation_bar.keyboard_shortcuts' defaultMessage = 'Hotkeys' / > < / L i n k > · < / l i > }
< li > < a href = '/auth/edit' > < FormattedMessage id = 'getting_started.security' defaultMessage = 'Security' / > < / a > · < / l i >
2021-06-27 16:31:28 -04:00
{ ! limitedFederationMode && < li > < a href = '/about/more' target = '_blank' > < FormattedMessage id = 'navigation_bar.info' defaultMessage = 'About this server' / > < / a > · < / l i > }
2019-08-26 12:24:10 -04:00
< li > < a href = 'https://joinmastodon.org/apps' target = '_blank' > < FormattedMessage id = 'navigation_bar.apps' defaultMessage = 'Mobile apps' / > < / a > · < / l i >
< li > < a href = '/terms' target = '_blank' > < FormattedMessage id = 'getting_started.terms' defaultMessage = 'Terms of service' / > < / a > · < / l i >
< li > < a href = '/settings/applications' target = '_blank' > < FormattedMessage id = 'getting_started.developers' defaultMessage = 'Developers' / > < / a > · < / l i >
< li > < a href = 'https://docs.joinmastodon.org' target = '_blank' > < FormattedMessage id = 'getting_started.documentation' defaultMessage = 'Documentation' / > < / a > · < / l i >
< li > < a href = '/auth/sign_out' onClick = { this . handleLogoutClick } > < FormattedMessage id = 'navigation_bar.logout' defaultMessage = 'Logout' / > < / a > < / l i >
< / u l >
< p >
< FormattedMessage
id = 'getting_started.open_source_notice'
defaultMessage = 'Mastodon is open source software. You can contribute or report issues on GitHub at {github}.'
2019-10-24 16:44:42 -04:00
values = { { github : < span > < a href = { source _url } rel = 'noopener noreferrer' target = '_blank' > { repository } < / a > ( v { v e r s i o n } ) < / s p a n > } }
2019-08-26 12:24:10 -04:00
/ >
< / p >
< / d i v >
) ;
}
} ;