2022-02-23 21:03:46 +02:00
import PropTypes from 'prop-types' ;
2023-05-28 17:38:10 +03:00
import { PureComponent } from 'react' ;
import { FormattedMessage } from 'react-intl' ;
import { OrderedSet } from 'immutable' ;
2022-02-23 21:03:46 +02:00
import ImmutablePropTypes from 'react-immutable-proptypes' ;
import { connect } from 'react-redux' ;
2023-05-28 17:38:10 +03:00
2022-02-23 21:03:46 +02:00
import Button from 'flavours/glitch/components/button' ;
2023-06-13 20:26:25 +03:00
import { LoadingIndicator } from 'flavours/glitch/components/loading_indicator' ;
2023-05-28 17:38:10 +03:00
import StatusCheckBox from 'flavours/glitch/features/report/containers/status_check_box_container' ;
2022-02-23 21:03:46 +02:00
const mapStateToProps = ( state , { accountId } ) => ( {
availableStatusIds : OrderedSet ( state . getIn ( [ 'timelines' , ` account: ${ accountId } :with_replies ` , 'items' ] ) ) ,
2022-02-27 08:37:00 +02:00
isLoading : state . getIn ( [ 'timelines' , ` account: ${ accountId } :with_replies ` , 'isLoading' ] ) ,
2022-02-23 21:03:46 +02:00
} ) ;
2023-05-28 15:18:23 +03:00
class Statuses extends PureComponent {
2022-02-23 21:03:46 +02:00
static propTypes = {
onNextStep : PropTypes . func . isRequired ,
accountId : PropTypes . string . isRequired ,
availableStatusIds : ImmutablePropTypes . set . isRequired ,
selectedStatusIds : ImmutablePropTypes . set . isRequired ,
2022-02-27 08:37:00 +02:00
isLoading : PropTypes . bool ,
2022-02-23 21:03:46 +02:00
onToggle : PropTypes . func . isRequired ,
} ;
handleNextClick = ( ) => {
const { onNextStep } = this . props ;
onNextStep ( 'comment' ) ;
} ;
render ( ) {
2022-02-27 08:37:00 +02:00
const { availableStatusIds , selectedStatusIds , onToggle , isLoading } = this . props ;
2022-02-23 21:03:46 +02:00
return (
2023-05-28 15:56:24 +03:00
< >
2022-02-23 21:03:46 +02:00
< h3 className = 'report-dialog-modal__title' > < FormattedMessage id = 'report.statuses.title' defaultMessage = 'Are there any posts that back up this report?' / > < / h3 >
< 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 08:37:00 +02:00
{ isLoading ? < LoadingIndicator / > : availableStatusIds . union ( selectedStatusIds ) . map ( statusId => (
2022-02-23 21:03:46 +02:00
< StatusCheckBox
id = { statusId }
key = { statusId }
checked = { selectedStatusIds . includes ( statusId ) }
onToggle = { onToggle }
/ >
) ) }
< / div >
< div className = 'flex-spacer' / >
< div className = 'report-dialog-modal__actions' >
< Button onClick = { this . handleNextClick } > < FormattedMessage id = 'report.next' defaultMessage = 'Next' / > < / Button >
< / div >
2023-05-28 15:56:24 +03:00
< / >
2022-02-23 21:03:46 +02:00
) ;
}
}
2023-03-25 00:15:25 +02:00
export default connect ( mapStateToProps ) ( Statuses ) ;