2023-05-23 18:52:27 +10:00
import { useCallback } from 'react' ;
2023-05-24 01:15:17 +10:00
2022-09-29 12:39:33 +10:00
import { FormattedMessage } from 'react-intl' ;
2023-05-24 01:15:17 +10:00
2022-10-27 04:35:55 +11:00
import { openModal } from 'mastodon/actions/modal' ;
2023-08-04 00:43:15 +10:00
import { registrationsOpen , sso _redirect } from 'mastodon/initial_state' ;
2023-05-24 01:15:17 +10:00
import { useAppDispatch , useAppSelector } from 'mastodon/store' ;
2022-09-29 12:39:33 +10:00
2022-10-27 04:35:55 +11:00
const SignInBanner = ( ) => {
2023-05-23 23:17:09 +10:00
const dispatch = useAppDispatch ( ) ;
2022-10-27 04:35:55 +11:00
const openClosedRegistrationsModal = useCallback (
2023-05-25 23:42:37 +10:00
( ) => dispatch ( openModal ( { modalType : 'CLOSED_REGISTRATIONS' } ) ) ,
2022-10-27 04:35:55 +11:00
[ dispatch ] ,
) ;
let signupButton ;
2023-08-08 01:58:29 +10:00
const signupUrl = useAppSelector ( ( state ) => state . getIn ( [ 'server' , 'server' , 'registrations' , 'url' ] , null ) || '/auth/sign_up' ) ;
2023-08-04 00:43:15 +10:00
2023-08-08 01:58:29 +10:00
if ( sso _redirect ) {
2023-08-04 00:43:15 +10:00
return (
< div className = 'sign-in-banner' >
< p > < FormattedMessage id = 'sign_in_banner.text' defaultMessage = 'Login to follow profiles or hashtags, favorite, share and reply to posts. You can also interact from your account on a different server.' / > < / p >
< a href = { sso _redirect } data - method = 'post' className = 'button button--block button-tertiary' > < FormattedMessage id = 'sign_in_banner.sso_redirect' defaultMessage = 'Login or Register' / > < / a >
< / div >
2023-10-09 22:38:29 +11:00
) ;
2023-08-04 00:43:15 +10:00
}
2023-05-23 23:17:09 +10:00
2022-10-27 04:35:55 +11:00
if ( registrationsOpen ) {
signupButton = (
2023-05-23 23:17:09 +10:00
< a href = { signupUrl } className = 'button button--block' >
2022-10-27 04:35:55 +11:00
< FormattedMessage id = 'sign_in_banner.create_account' defaultMessage = 'Create account' / >
< / a >
) ;
} else {
signupButton = (
2023-05-11 04:17:55 +10:00
< button className = 'button button--block' onClick = { openClosedRegistrationsModal } >
2022-10-27 04:35:55 +11:00
< FormattedMessage id = 'sign_in_banner.create_account' defaultMessage = 'Create account' / >
< / button >
) ;
}
return (
< div className = 'sign-in-banner' >
2023-07-22 03:09:13 +10:00
< p > < FormattedMessage id = 'sign_in_banner.text' defaultMessage = 'Login to follow profiles or hashtags, favorite, share and reply to posts. You can also interact from your account on a different server.' / > < / p >
2022-10-27 04:35:55 +11:00
{ signupButton }
2023-05-11 04:17:55 +10:00
< a href = '/auth/sign_in' className = 'button button--block button-tertiary' > < FormattedMessage id = 'sign_in_banner.sign_in' defaultMessage = 'Login' / > < / a >
2022-10-27 04:35:55 +11:00
< / div >
) ;
} ;
2022-09-29 12:39:33 +10:00
export default SignInBanner ;