2017-05-03 09:04:16 +09:00
import React from 'react' ;
2016-11-24 06:57:57 +09:00
import { connect } from 'react-redux' ;
import Status from '../components/status' ;
2016-10-25 00:11:02 +09:00
import { makeGetStatus } from '../selectors' ;
import {
replyCompose ,
mentionCompose
2016-11-24 06:57:57 +09:00
} from '../actions/compose' ;
2016-10-25 00:11:02 +09:00
import {
reblog ,
favourite ,
unreblog ,
unfavourite
2016-11-24 06:57:57 +09:00
} from '../actions/interactions' ;
2017-02-06 10:51:56 +09:00
import {
blockAccount ,
muteAccount
} from '../actions/accounts' ;
2016-11-24 06:57:57 +09:00
import { deleteStatus } from '../actions/statuses' ;
2017-02-15 04:59:26 +09:00
import { initReport } from '../actions/reports' ;
2017-04-02 05:11:28 +09:00
import { openModal } from '../actions/modal' ;
2016-11-04 20:48:53 +09:00
import { createSelector } from 'reselect'
2017-01-08 19:04:01 +09:00
import { isMobile } from '../is_mobile'
2017-04-23 11:39:50 +09:00
import { defineMessages , injectIntl , FormattedMessage } from 'react-intl' ;
const messages = defineMessages ( {
deleteConfirm : { id : 'confirmations.delete.confirm' , defaultMessage : 'Delete' } ,
deleteMessage : { id : 'confirmations.delete.message' , defaultMessage : 'Are you sure you want to delete this status?' } ,
blockConfirm : { id : 'confirmations.block.confirm' , defaultMessage : 'Block' } ,
muteConfirm : { id : 'confirmations.mute.confirm' , defaultMessage : 'Mute' } ,
} ) ;
2016-10-25 00:11:02 +09:00
2017-02-23 00:30:09 +09:00
const makeMapStateToProps = ( ) => {
const getStatus = makeGetStatus ( ) ;
2016-10-25 00:11:02 +09:00
2017-02-23 00:30:09 +09:00
const mapStateToProps = ( state , props ) => ( {
status : getStatus ( state , props . id ) ,
2017-04-11 23:10:16 +09:00
me : state . getIn ( [ 'meta' , 'me' ] ) ,
2017-04-17 19:14:03 +09:00
boostModal : state . getIn ( [ 'meta' , 'boost_modal' ] ) ,
autoPlayGif : state . getIn ( [ 'meta' , 'auto_play_gif' ] )
2016-10-25 00:11:02 +09:00
} ) ;
return mapStateToProps ;
} ;
2017-04-23 11:39:50 +09:00
const mapDispatchToProps = ( dispatch , { intl } ) => ( {
2016-10-25 00:11:02 +09:00
2016-11-21 18:52:11 +09:00
onReply ( status , router ) {
dispatch ( replyCompose ( status , router ) ) ;
2016-10-25 00:11:02 +09:00
} ,
2017-04-11 11:28:52 +09:00
onModalReblog ( status ) {
dispatch ( reblog ( status ) ) ;
} ,
2017-04-11 21:34:14 +09:00
onReblog ( status , e ) {
2016-10-25 00:11:02 +09:00
if ( status . get ( 'reblogged' ) ) {
dispatch ( unreblog ( status ) ) ;
} else {
2017-04-13 09:15:45 +09:00
if ( e . shiftKey || ! this . boostModal ) {
2017-04-11 21:34:14 +09:00
this . onModalReblog ( status ) ;
} else {
dispatch ( openModal ( 'BOOST' , { status , onReblog : this . onModalReblog } ) ) ;
}
2016-10-25 00:11:02 +09:00
}
} ,
onFavourite ( status ) {
if ( status . get ( 'favourited' ) ) {
dispatch ( unfavourite ( status ) ) ;
} else {
dispatch ( favourite ( status ) ) ;
}
} ,
onDelete ( status ) {
2017-04-23 11:39:50 +09:00
dispatch ( openModal ( 'CONFIRM' , {
message : intl . formatMessage ( messages . deleteMessage ) ,
confirm : intl . formatMessage ( messages . deleteConfirm ) ,
onConfirm : ( ) => dispatch ( deleteStatus ( status . get ( 'id' ) ) )
} ) ) ;
2016-10-25 00:11:02 +09:00
} ,
2017-01-08 19:04:01 +09:00
onMention ( account , router ) {
2017-01-31 05:40:55 +09:00
dispatch ( mentionCompose ( account , router ) ) ;
2016-10-25 01:07:40 +09:00
} ,
2017-02-05 10:48:11 +09:00
onOpenMedia ( media , index ) {
2017-04-02 05:11:28 +09:00
dispatch ( openModal ( 'MEDIA' , { media , index } ) ) ;
2016-11-24 06:57:57 +09:00
} ,
2017-04-14 00:01:09 +09:00
onOpenVideo ( media , time ) {
dispatch ( openModal ( 'VIDEO' , { media , time } ) ) ;
2017-04-13 22:04:18 +09:00
} ,
2016-11-24 06:57:57 +09:00
onBlock ( account ) {
2017-04-23 11:39:50 +09:00
dispatch ( openModal ( 'CONFIRM' , {
message : < FormattedMessage id = 'confirmations.block.message' defaultMessage = 'Are you sure you want to block {name}?' values = { { name : < strong > @ { account . get ( 'acct' ) } < /strong> }} / > ,
confirm : intl . formatMessage ( messages . blockConfirm ) ,
onConfirm : ( ) => dispatch ( blockAccount ( account . get ( 'id' ) ) )
} ) ) ;
2017-02-15 04:59:26 +09:00
} ,
onReport ( status ) {
dispatch ( initReport ( status . get ( 'account' ) , status ) ) ;
2017-02-06 10:51:56 +09:00
} ,
onMute ( account ) {
2017-04-23 11:39:50 +09:00
dispatch ( openModal ( 'CONFIRM' , {
message : < FormattedMessage id = 'confirmations.mute.message' defaultMessage = 'Are you sure you want to mute {name}?' values = { { name : < strong > @ { account . get ( 'acct' ) } < /strong> }} / > ,
confirm : intl . formatMessage ( messages . muteConfirm ) ,
onConfirm : ( ) => dispatch ( muteAccount ( account . get ( 'id' ) ) )
} ) ) ;
2017-02-06 10:51:56 +09:00
} ,
2016-10-25 00:11:02 +09:00
} ) ;
2017-04-23 11:39:50 +09:00
export default injectIntl ( connect ( makeMapStateToProps , mapDispatchToProps ) ( Status ) ) ;