@ -237,7 +237,6 @@ class StatusActionBar extends ImmutablePureComponent {
const { status , relationship , intl , withDismiss , withCounters , scrollKey } = this . props ;
const { signedIn , permissions } = this . context . identity ;
const anonymousAccess = ! signedIn ;
const publicStatus = [ 'public' , 'unlisted' ] . includes ( status . get ( 'visibility' ) ) ;
const pinnableStatus = [ 'public' , 'unlisted' , 'private' ] . includes ( status . get ( 'visibility' ) ) ;
const mutingConversation = status . get ( 'muted' ) ;
@ -263,71 +262,73 @@ class StatusActionBar extends ImmutablePureComponent {
menu . push ( { text : intl . formatMessage ( messages . embed ) , action : this . handleEmbed } ) ;
}
menu . push ( null ) ;
menu . push ( { text : intl . formatMessage ( status . get ( 'bookmarked' ) ? messages . removeBookmark : messages . bookmark ) , action : this . handleBookmarkClick } ) ;
if ( writtenByMe && pinnableStatus ) {
menu . push ( { text : intl . formatMessage ( status . get ( 'pinned' ) ? messages . unpin : messages . pin ) , action : this . handlePinClick } ) ;
}
menu . push ( null ) ;
if ( writtenByMe || withDismiss ) {
menu . push ( { text : intl . formatMessage ( mutingConversation ? messages . unmuteConversation : messages . muteConversation ) , action : this . handleConversationMuteClick } ) ;
if ( signedIn ) {
menu . push ( null ) ;
}
if ( writtenByMe ) {
menu . push ( { text : intl . formatMessage ( messages . edit ) , action : this . handleEditClick } ) ;
menu . push ( { text : intl . formatMessage ( messages . delete ) , action : this . handleDeleteClick , dangerous : true } ) ;
menu . push ( { text : intl . formatMessage ( messages . redraft ) , action : this . handleRedraftClick , dangerous : true } ) ;
} else {
menu . push ( { text : intl . formatMessage ( messages . mention , { name : account . get ( 'username' ) } ) , action : this . handleMentionClick } ) ;
menu . push ( { text : intl . formatMessage ( messages . direct , { name : account . get ( 'username' ) } ) , action : this . handleDirectClick } ) ;
menu . push ( null ) ;
menu . push ( { text : intl . formatMessage ( status . get ( 'bookmarked' ) ? messages . removeBookmark : messages . bookmark ) , action : this . handleBookmarkClick } ) ;
if ( relationship && relationship . get ( 'muting' ) ) {
menu . push ( { text : intl . formatMessage ( messages . unmute , { name : account . get ( 'username' ) } ) , action : this . handleMuteClick } ) ;
} else {
menu . push ( { text : intl . formatMessage ( messages . mute , { name : account . get ( 'username' ) } ) , action : this . handleMuteClick , dangerous : true } ) ;
if ( writtenByMe && pinnableStatus ) {
menu . push ( { text : intl . formatMessage ( status . get ( 'pinned' ) ? messages . unpin : messages . pin ) , action : this . handlePinClick } ) ;
}
if ( relationship && relationship . get ( 'blocking' ) ) {
menu . push ( { text : intl . formatMessage ( messages . unblock , { name : account . get ( 'username' ) } ) , action : this . handleBlockClick } ) ;
} else {
menu . push ( { text : intl . formatMessage ( messages . block , { name : account . get ( 'username' ) } ) , action : this . handleBlockClick , dangerous : true } ) ;
}
menu . push ( null ) ;
if ( ! this . props . onFilter ) {
menu . push ( null ) ;
menu . push ( { text : intl . formatMessage ( messages . filter ) , action : this . handleFilterClick , dangerous : true } ) ;
if ( writtenByMe || withDismiss ) {
menu . push ( { text : intl . formatMessage ( mutingConversation ? messages . unmuteConversation : messages . muteConversation ) , action : this . handleConversationMuteClick } ) ;
menu . push ( null ) ;
}
menu . push ( { text : intl . formatMessage ( messages . report , { name : account . get ( 'username' ) } ) , action : this . handleReport , dangerous : true } ) ;
if ( account . get ( 'acct' ) !== account . get ( 'username' ) ) {
const domain = account . get ( 'acct' ) . split ( '@' ) [ 1 ] ;
if ( writtenByMe ) {
menu . push ( { text : intl . formatMessage ( messages . edit ) , action : this . handleEditClick } ) ;
menu . push ( { text : intl . formatMessage ( messages . delete ) , action : this . handleDeleteClick , dangerous : true } ) ;
menu . push ( { text : intl . formatMessage ( messages . redraft ) , action : this . handleRedraftClick , dangerous : true } ) ;
} else {
menu . push ( { text : intl . formatMessage ( messages . mention , { name : account . get ( 'username' ) } ) , action : this . handleMentionClick } ) ;
menu . push ( { text : intl . formatMessage ( messages . direct , { name : account . get ( 'username' ) } ) , action : this . handleDirectClick } ) ;
menu . push ( null ) ;
if ( relationship && relationship . get ( ' domain_block ing') ) {
menu . push ( { text : intl . formatMessage ( messages . un blockDomain, { domain } ) , action : this . handleUnblockDomain } ) ;
if ( relationship && relationship . get ( ' mut ing') ) {
menu . push ( { text : intl . formatMessage ( messages . un mute, { name : account . get ( 'username' ) } ) , action : this . handleMuteClick } ) ;
} else {
menu . push ( { text : intl . formatMessage ( messages . blockDomain, { domain } ) , action : this . handleBlockDomain , dangerous : true } ) ;
menu . push ( { text : intl . formatMessage ( messages . mute, { name : account . get ( 'username' ) } ) , action : this . handleMuteClick , dangerous : true } ) ;
}
}
if ( ( permissions & PERMISSION _MANAGE _USERS ) === PERMISSION _MANAGE _USERS || ( isRemote && ( permissions & PERMISSION _MANAGE _FEDERATION ) === PERMISSION _MANAGE _FEDERATION ) ) {
menu . push ( null ) ;
if ( ( permissions & PERMISSION _MANAGE _USERS ) === PERMISSION _MANAGE _USERS ) {
menu . push ( { text : intl . formatMessage ( messages . admin _account , { name : account . get ( 'username' ) } ) , href : ` /admin/accounts/ ${ status . getIn ( [ 'account' , 'id' ] ) } ` } ) ;
menu . push ( { text : intl . formatMessage ( messages . admin _status ) , href : ` /admin/accounts/ ${ status . getIn ( [ 'account' , 'id' ] ) } /statuses/ ${ status . get ( 'id' ) } ` } ) ;
if ( relationship && relationship . get ( 'blocking' ) ) {
menu . push ( { text : intl . formatMessage ( messages . unblock , { name : account . get ( 'username' ) } ) , action : this . handleBlockClick } ) ;
} else {
menu . push ( { text : intl . formatMessage ( messages . block , { name : account . get ( 'username' ) } ) , action : this . handleBlockClick , dangerous : true } ) ;
}
if ( ! this . props . onFilter ) {
menu . push ( null ) ;
menu . push ( { text : intl . formatMessage ( messages . filter ) , action : this . handleFilterClick , dangerous : true } ) ;
menu . push ( null ) ;
}
if ( isRemote && ( permissions & PERMISSION _MANAGE _FEDERATION ) === PERMISSION _MANAGE _FEDERATION ) {
menu . push ( { text : intl . formatMessage ( messages . report , { name : account . get ( 'username' ) } ) , action : this . handleReport , dangerous : true } ) ;
if ( account . get ( 'acct' ) !== account . get ( 'username' ) ) {
const domain = account . get ( 'acct' ) . split ( '@' ) [ 1 ] ;
menu . push ( { text : intl . formatMessage ( messages . admin _domain , { domain : domain } ) , href : ` /admin/instances/ ${ domain } ` } ) ;
menu . push ( null ) ;
if ( relationship && relationship . get ( 'domain_blocking' ) ) {
menu . push ( { text : intl . formatMessage ( messages . unblockDomain , { domain } ) , action : this . handleUnblockDomain } ) ;
} else {
menu . push ( { text : intl . formatMessage ( messages . blockDomain , { domain } ) , action : this . handleBlockDomain , dangerous : true } ) ;
}
}
if ( ( permissions & PERMISSION _MANAGE _USERS ) === PERMISSION _MANAGE _USERS || ( isRemote && ( permissions & PERMISSION _MANAGE _FEDERATION ) === PERMISSION _MANAGE _FEDERATION ) ) {
menu . push ( null ) ;
if ( ( permissions & PERMISSION _MANAGE _USERS ) === PERMISSION _MANAGE _USERS ) {
menu . push ( { text : intl . formatMessage ( messages . admin _account , { name : account . get ( 'username' ) } ) , href : ` /admin/accounts/ ${ status . getIn ( [ 'account' , 'id' ] ) } ` } ) ;
menu . push ( { text : intl . formatMessage ( messages . admin _status ) , href : ` /admin/accounts/ ${ status . getIn ( [ 'account' , 'id' ] ) } /statuses/ ${ status . get ( 'id' ) } ` } ) ;
}
if ( isRemote && ( permissions & PERMISSION _MANAGE _FEDERATION ) === PERMISSION _MANAGE _FEDERATION ) {
const domain = account . get ( 'acct' ) . split ( '@' ) [ 1 ] ;
menu . push ( { text : intl . formatMessage ( messages . admin _domain , { domain : domain } ) , href : ` /admin/instances/ ${ domain } ` } ) ;
}
}
}
}
@ -371,7 +372,6 @@ class StatusActionBar extends ImmutablePureComponent {
< div className = 'status__action-bar__dropdown' >
< DropdownMenuContainer
scrollKey = { scrollKey }
disabled = { anonymousAccess }
status = { status }
items = { menu }
icon = 'ellipsis-h'