Merge pull request #386 from ashkitten/compressed-notifs
compress boost/fave notifications moremaster
commit
a3c86d8cb9
@ -0,0 +1,81 @@ |
||||
// Package imports.
|
||||
import React from 'react'; |
||||
import PropTypes from 'prop-types'; |
||||
import ImmutablePropTypes from 'react-immutable-proptypes'; |
||||
import { defineMessages, injectIntl } from 'react-intl'; |
||||
|
||||
// Mastodon imports.
|
||||
import IconButton from './icon_button'; |
||||
import VisibilityIcon from './status_visibility_icon'; |
||||
|
||||
// Messages for use with internationalization stuff.
|
||||
const messages = defineMessages({ |
||||
collapse: { id: 'status.collapse', defaultMessage: 'Collapse' }, |
||||
uncollapse: { id: 'status.uncollapse', defaultMessage: 'Uncollapse' }, |
||||
public: { id: 'privacy.public.short', defaultMessage: 'Public' }, |
||||
unlisted: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, |
||||
private: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, |
||||
direct: { id: 'privacy.direct.short', defaultMessage: 'Direct' }, |
||||
}); |
||||
|
||||
@injectIntl |
||||
export default class StatusIcons extends React.PureComponent { |
||||
|
||||
static propTypes = { |
||||
status: ImmutablePropTypes.map.isRequired, |
||||
mediaIcon: PropTypes.string, |
||||
collapsible: PropTypes.bool, |
||||
collapsed: PropTypes.bool, |
||||
setExpansion: PropTypes.func.isRequired, |
||||
intl: PropTypes.object.isRequired, |
||||
}; |
||||
|
||||
// Handles clicks on collapsed button
|
||||
handleCollapsedClick = (e) => { |
||||
const { collapsed, setExpansion } = this.props; |
||||
if (e.button === 0) { |
||||
setExpansion(collapsed ? null : false); |
||||
e.preventDefault(); |
||||
} |
||||
} |
||||
|
||||
// Rendering.
|
||||
render () { |
||||
const { |
||||
status, |
||||
mediaIcon, |
||||
collapsible, |
||||
collapsed, |
||||
intl, |
||||
} = this.props; |
||||
|
||||
return ( |
||||
<div className='status__info__icons'> |
||||
{mediaIcon ? ( |
||||
<i |
||||
className={`fa fa-fw fa-${mediaIcon}`} |
||||
aria-hidden='true' |
||||
/> |
||||
) : null} |
||||
{( |
||||
<VisibilityIcon visibility={status.get('visibility')} /> |
||||
)} |
||||
{collapsible ? ( |
||||
<IconButton |
||||
className='status__collapse-button' |
||||
animate flip |
||||
active={collapsed} |
||||
title={ |
||||
collapsed ? |
||||
intl.formatMessage(messages.uncollapse) : |
||||
intl.formatMessage(messages.collapse) |
||||
} |
||||
icon='angle-double-up' |
||||
onClick={this.handleCollapsedClick} |
||||
/> |
||||
) : null} |
||||
</div> |
||||
); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue