2019-08-26 19:24:10 +03:00
import { connect } from 'react-redux' ;
2019-05-27 22:58:41 +03:00
import React from 'react' ;
import PropTypes from 'prop-types' ;
2019-08-26 19:24:10 +03:00
import { FormattedMessage , defineMessages , injectIntl } from 'react-intl' ;
2019-05-27 22:58:41 +03:00
import { Link } from 'react-router-dom' ;
2022-03-03 07:45:30 +02:00
import { limitedFederationMode , version , repository , source _url , profile _directory as profileDirectory } from 'flavours/glitch/util/initial_state' ;
2022-09-29 07:22:12 +03:00
import { signOutLink , securityLink , privacyPolicyLink } from 'flavours/glitch/util/backend_links' ;
2019-08-26 19:24:10 +03:00
import { logOut } from 'flavours/glitch/util/log_out' ;
import { openModal } from 'flavours/glitch/actions/modal' ;
2022-07-05 03:41:40 +03:00
import { PERMISSION _INVITE _USERS } from 'flavours/glitch/permissions' ;
2019-05-27 22:58:41 +03:00
2019-08-26 19:24:10 +03: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 13:14:13 +03:00
closeWhenConfirm : false ,
2019-08-26 19:24:10 +03:00
onConfirm : ( ) => logOut ( ) ,
} ) ) ;
} ,
} ) ;
export default @ injectIntl
@ connect ( null , mapDispatchToProps )
class LinkFooter extends React . PureComponent {
2022-07-05 03:41:40 +03:00
static contextTypes = {
identity : PropTypes . object ,
} ;
2019-08-26 19:24:10 +03:00
static propTypes = {
onLogout : PropTypes . func . isRequired ,
intl : PropTypes . object . isRequired ,
} ;
handleLogoutClick = e => {
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
2019-05-27 22:58:41 +03:00
2019-08-26 19:24:10 +03:00
this . props . onLogout ( ) ;
return false ;
}
render ( ) {
return (
< div className = 'getting-started__footer' >
< ul >
2022-07-05 03:41:40 +03:00
{ ( ( this . context . identity . permissions & PERMISSION _INVITE _USERS ) === PERMISSION _INVITE _USERS ) && < li > < a href = '/invites' target = '_blank' > < FormattedMessage id = 'getting_started.invite' defaultMessage = 'Invite people' / > < / a > · < / l i > }
2019-08-31 14:04:26 +03:00
{ ! ! securityLink && < li > < a href = '/auth/edit' > < FormattedMessage id = 'getting_started.security' defaultMessage = 'Security' / > < / a > · < / l i > }
2021-06-27 23:31:28 +03:00
{ ! limitedFederationMode && < li > < a href = '/about/more' target = '_blank' > < FormattedMessage id = 'navigation_bar.info' defaultMessage = 'About this server' / > < / a > · < / l i > }
2022-03-03 07:45:30 +02:00
{ profileDirectory && < li > < Link to = '/directory' > < FormattedMessage id = 'getting_started.directory' defaultMessage = 'Profile directory' / > < / L i n k > · < / l i > }
2019-08-26 19:24:10 +03:00
< li > < a href = 'https://joinmastodon.org/apps' target = '_blank' > < FormattedMessage id = 'navigation_bar.apps' defaultMessage = 'Mobile apps' / > < / a > · < / l i >
2022-09-29 07:22:12 +03:00
< li > < a href = { privacyPolicyLink } target = '_blank' > < FormattedMessage id = 'getting_started.privacy_policy' defaultMessage = 'Privacy Policy' / > < / a > · < / l i >
2019-08-26 19:24:10 +03:00
< 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 = { signOutLink } onClick = { this . handleLogoutClick } > < FormattedMessage id = 'navigation_bar.logout' defaultMessage = 'Logout' / > < / a > < / l i >
< / u l >
< p >
< FormattedMessage
id = 'getting_started.open_source_notice'
defaultMessage = 'Glitchsoc is open source software, a friendly fork of {Mastodon}. You can contribute or report issues on GitHub at {github}.'
values = { {
2021-09-08 14:47:48 +03:00
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-10-24 23:44:42 +03:00
Mastodon : < a href = 'https://github.com/tootsuite/mastodon' rel = 'noopener noreferrer' target = '_blank' > Mastodon < / a > } }
2019-08-26 19:24:10 +03:00
/ >
< / p >
< / d i v >
) ;
}
} ;