2017-07-18 17:14:43 +02:00
import React from 'react' ;
2016-11-20 19:39:18 +01:00
import { connect } from 'react-redux' ;
2017-07-18 17:14:43 +02:00
import { defineMessages , injectIntl , FormattedMessage } from 'react-intl' ;
2016-11-20 19:39:18 +01:00
import { makeGetAccount } from '../selectors' ;
import Account from '../components/account' ;
2016-10-28 20:05:44 +02:00
import {
followAccount ,
2017-01-16 19:36:32 +01:00
unfollowAccount ,
blockAccount ,
2017-02-06 02:51:56 +01:00
unblockAccount ,
muteAccount ,
unmuteAccount ,
2016-11-20 19:39:18 +01:00
} from '../actions/accounts' ;
2017-07-18 17:14:43 +02:00
import { openModal } from '../actions/modal' ;
const messages = defineMessages ( {
unfollowConfirm : { id : 'confirmations.unfollow.confirm' , defaultMessage : 'Unfollow' } ,
} ) ;
2016-10-27 21:59:56 +02:00
const makeMapStateToProps = ( ) => {
const getAccount = makeGetAccount ( ) ;
const mapStateToProps = ( state , props ) => ( {
account : getAccount ( state , props . id ) ,
2017-05-20 17:31:47 +02:00
me : state . getIn ( [ 'meta' , 'me' ] ) ,
2017-07-18 17:14:43 +02:00
unfollowModal : state . getIn ( [ 'meta' , 'unfollow_modal' ] ) ,
2016-10-27 21:59:56 +02:00
} ) ;
return mapStateToProps ;
} ;
2017-07-18 17:14:43 +02:00
const mapDispatchToProps = ( dispatch , { intl } ) => ( {
2016-10-28 20:05:44 +02:00
onFollow ( account ) {
if ( account . getIn ( [ 'relationship' , 'following' ] ) ) {
2017-07-18 17:14:43 +02:00
if ( this . unfollowModal ) {
dispatch ( openModal ( 'CONFIRM' , {
message : < FormattedMessage id = 'confirmations.unfollow.message' defaultMessage = 'Are you sure you want to unfollow {name}?' values = { { name : < strong > @ { account . get ( 'acct' ) } < /strong> }} / > ,
confirm : intl . formatMessage ( messages . unfollowConfirm ) ,
onConfirm : ( ) => dispatch ( unfollowAccount ( account . get ( 'id' ) ) ) ,
} ) ) ;
} else {
dispatch ( unfollowAccount ( account . get ( 'id' ) ) ) ;
}
2016-10-28 20:05:44 +02:00
} else {
dispatch ( followAccount ( account . get ( 'id' ) ) ) ;
}
2017-01-16 19:36:32 +01:00
} ,
onBlock ( account ) {
if ( account . getIn ( [ 'relationship' , 'blocking' ] ) ) {
dispatch ( unblockAccount ( account . get ( 'id' ) ) ) ;
} else {
dispatch ( blockAccount ( account . get ( 'id' ) ) ) ;
}
2017-02-06 02:51:56 +01:00
} ,
onMute ( account ) {
if ( account . getIn ( [ 'relationship' , 'muting' ] ) ) {
dispatch ( unmuteAccount ( account . get ( 'id' ) ) ) ;
} else {
dispatch ( muteAccount ( account . get ( 'id' ) ) ) ;
}
2017-05-20 17:31:47 +02:00
} ,
2017-07-18 17:14:43 +02:00
2016-10-27 21:59:56 +02:00
} ) ;
2017-07-18 17:14:43 +02:00
export default injectIntl ( connect ( makeMapStateToProps , mapDispatchToProps ) ( Account ) ) ;