containerId: PropTypes.string,
id: PropTypes.string,
status: ImmutablePropTypes.map,
- otherAccounts: ImmutablePropTypes.list,
account: ImmutablePropTypes.map,
onReply: PropTypes.func,
onFavourite: PropTypes.func,
intl,
status,
account,
- otherAccounts,
settings,
collapsed,
muted,
friend={account}
collapsed={isCollapsed}
parseClick={parseClick}
- otherAccounts={otherAccounts}
/>
) : null}
</span>
collapsible={settings.getIn(['collapsed', 'enabled'])}
collapsed={isCollapsed}
setCollapsed={setCollapsed}
- directMessage={!!otherAccounts}
settings={settings.get('status_icons')}
/>
</header>
status={status}
account={status.get('account')}
showReplyCount={settings.get('show_reply_count')}
- directMessage={!!otherAccounts}
onFilter={this.handleFilterClick}
/>
) : null}
onFilter: PropTypes.func,
withDismiss: PropTypes.bool,
showReplyCount: PropTypes.bool,
- directMessage: PropTypes.bool,
scrollKey: PropTypes.string,
intl: PropTypes.object.isRequired,
};
}
render () {
- const { status, intl, withDismiss, showReplyCount, directMessage, scrollKey } = this.props;
+ const { status, intl, withDismiss, showReplyCount, scrollKey } = this.props;
const anonymousAccess = !me;
const mutingConversation = status.get('muted');
return (
<div className='status__action-bar'>
{replyButton}
- {!directMessage && [
- <IconButton key='reblog-button' className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon={reblogIcon} onClick={this.handleReblogClick} />,
- <IconButton key='favourite-button' className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />,
- shareButton,
- <IconButton key='bookmark-button' className='status__action-bar-button bookmark-icon' disabled={anonymousAccess} active={status.get('bookmarked')} pressed={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} />,
- filterButton,
- <div key='dropdown-button' className='status__action-bar-dropdown'>
- <DropdownMenuContainer
- scrollKey={scrollKey}
- disabled={anonymousAccess}
- status={status}
- items={menu}
- icon='ellipsis-h'
- size={18}
- direction='right'
- ariaLabel={intl.formatMessage(messages.more)}
- />
- </div>,
- ]}
+ <IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon={reblogIcon} onClick={this.handleReblogClick} />
+ <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />
+ {shareButton}
+ <IconButton className='status__action-bar-button bookmark-icon' disabled={anonymousAccess} active={status.get('bookmarked')} pressed={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} />
+ {filterButton}
+
+ <div className='status__action-bar-dropdown'>
+ <DropdownMenuContainer
+ scrollKey={scrollKey}
+ disabled={anonymousAccess}
+ status={status}
+ items={menu}
+ icon='ellipsis-h'
+ size={18}
+ direction='right'
+ ariaLabel={intl.formatMessage(messages.more)}
+ />
+ </div>
<a href={status.get('url')} className='status__relative-time' target='_blank' rel='noopener'>
<RelativeTimestamp timestamp={status.get('created_at')} />{status.get('edited_at') && <abbr title={intl.formatMessage(messages.edited, { date: intl.formatDate(status.get('edited_at'), { hour12: false, year: 'numeric', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }) })}> *</abbr>}
status: ImmutablePropTypes.map.isRequired,
friend: ImmutablePropTypes.map,
parseClick: PropTypes.func.isRequired,
- otherAccounts: ImmutablePropTypes.list,
};
// Handles clicks on account name/image
const {
status,
friend,
- otherAccounts,
} = this.props;
const account = status.get('account');
let statusAvatar;
- if (otherAccounts && otherAccounts.size > 0) {
- statusAvatar = <AvatarComposite accounts={otherAccounts} size={48} onAccountClick={this.handleClick} />;
- } else if (friend === undefined || friend === null) {
+ if (friend === undefined || friend === null) {
statusAvatar = <Avatar account={account} size={48} />;
} else {
statusAvatar = <AvatarOverlay account={account} friend={friend} />;
}
- if (!otherAccounts) {
- return (
- <div className='status__info__account'>
- <a
- href={account.get('url')}
- target='_blank'
- className='status__avatar'
- onClick={this.handleAccountClick}
- rel='noopener noreferrer'
- >
- {statusAvatar}
- </a>
- <a
- href={account.get('url')}
- target='_blank'
- className='status__display-name'
- onClick={this.handleAccountClick}
- rel='noopener noreferrer'
- >
- <DisplayName account={account} others={otherAccounts} />
- </a>
- </div>
- );
- } else {
- // This is a DM conversation
- return (
- <div className='status__info__account'>
- <span className='status__avatar'>
- {statusAvatar}
- </span>
-
- <span className='status__display-name'>
- <DisplayName account={account} others={otherAccounts} onAccountClick={this.handleClick} />
- </span>
- </div>
- );
- }
+ return (
+ <div className='status__info__account'>
+ <a
+ href={account.get('url')}
+ target='_blank'
+ className='status__avatar'
+ onClick={this.handleAccountClick}
+ rel='noopener noreferrer'
+ >
+ {statusAvatar}
+ </a>
+ <a
+ href={account.get('url')}
+ target='_blank'
+ className='status__display-name'
+ onClick={this.handleAccountClick}
+ rel='noopener noreferrer'
+ >
+ <DisplayName account={account} />
+ </a>
+ </div>
+ );
}
}
mediaIcons: PropTypes.arrayOf(PropTypes.string),
collapsible: PropTypes.bool,
collapsed: PropTypes.bool,
- directMessage: PropTypes.bool,
setCollapsed: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
settings: ImmutablePropTypes.map.isRequired,
mediaIcons,
collapsible,
collapsed,
- directMessage,
settings,
intl,
} = this.props;
title={intl.formatMessage(messages.localOnly)}
/>}
{settings.get('media') && !!mediaIcons && mediaIcons.map(icon => this.renderIcon(icon))}
- {settings.get('visibility') && !directMessage && <VisibilityIcon visibility={status.get('visibility')} />}
+ {settings.get('visibility') && <VisibilityIcon visibility={status.get('visibility')} />}
{collapsible && (
<IconButton
className='status__collapse-button'