2022-02-23 20:03:46 +01:00
import React from 'react' ;
import PropTypes from 'prop-types' ;
import ImmutablePropTypes from 'react-immutable-proptypes' ;
import { connect } from 'react-redux' ;
import StatusCheckBox from 'mastodon/features/report/containers/status_check_box_container' ;
import { OrderedSet } from 'immutable' ;
import { FormattedMessage } from 'react-intl' ;
import Button from 'mastodon/components/button' ;
2022-02-27 07:37:00 +01:00
import LoadingIndicator from 'mastodon/components/loading_indicator' ;
2022-02-23 20:03:46 +01:00
const mapStateToProps = ( state , { accountId } ) => ( {
availableStatusIds : OrderedSet ( state . getIn ( [ 'timelines' , ` account: ${ accountId } :with_replies ` , 'items' ] ) ) ,
2022-02-27 07:37:00 +01:00
isLoading : state . getIn ( [ 'timelines' , ` account: ${ accountId } :with_replies ` , 'isLoading' ] ) ,
2022-02-23 20:03:46 +01:00
} ) ;
export default @ connect ( mapStateToProps )
class Statuses extends React . PureComponent {
static propTypes = {
onNextStep : PropTypes . func . isRequired ,
accountId : PropTypes . string . isRequired ,
availableStatusIds : ImmutablePropTypes . set . isRequired ,
selectedStatusIds : ImmutablePropTypes . set . isRequired ,
2022-02-27 07:37:00 +01:00
isLoading : PropTypes . bool ,
2022-02-23 20:03:46 +01:00
onToggle : PropTypes . func . isRequired ,
} ;
handleNextClick = ( ) => {
const { onNextStep } = this . props ;
onNextStep ( 'comment' ) ;
} ;
render ( ) {
2022-02-27 07:37:00 +01:00
const { availableStatusIds , selectedStatusIds , onToggle , isLoading } = this . props ;
2022-02-23 20:03:46 +01:00
return (
< React . Fragment >
< h3 className = 'report-dialog-modal__title' > < FormattedMessage id = 'report.statuses.title' defaultMessage = 'Are there any posts that back up this report?' / > < / h 3 >
< p className = 'report-dialog-modal__lead' > < FormattedMessage id = 'report.statuses.subtitle' defaultMessage = 'Select all that apply' / > < / p >
< div className = 'report-dialog-modal__statuses' >
2022-02-27 07:37:00 +01:00
{ isLoading ? < LoadingIndicator / > : availableStatusIds . union ( selectedStatusIds ) . map ( statusId => (
2022-02-23 20:03:46 +01:00
< StatusCheckBox
id = { statusId }
key = { statusId }
checked = { selectedStatusIds . includes ( statusId ) }
onToggle = { onToggle }
/ >
) ) }
< / d i v >
< div className = 'flex-spacer' / >
< div className = 'report-dialog-modal__actions' >
< Button onClick = { this . handleNextClick } > < FormattedMessage id = 'report.next' defaultMessage = 'Next' / > < / B u t t o n >
< / d i v >
< / R e a c t . F r a g m e n t >
) ;
}
}