2 import React
from 'react';
3 import PropTypes
from 'prop-types';
4 import ImmutablePropTypes
from 'react-immutable-proptypes';
5 import { defineMessages
, injectIntl
} from 'react-intl';
8 import Avatar
from './avatar';
9 import AvatarOverlay
from './avatar_overlay';
10 import DisplayName
from './display_name';
11 import IconButton
from './icon_button';
12 import VisibilityIcon
from './status_visibility_icon';
14 // Messages for use with internationalization stuff.
15 const messages
= defineMessages({
16 collapse: { id: 'status.collapse', defaultMessage: 'Collapse' },
17 uncollapse: { id: 'status.uncollapse', defaultMessage: 'Uncollapse' },
18 public: { id: 'privacy.public.short', defaultMessage: 'Public' },
19 unlisted: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' },
20 private: { id: 'privacy.private.short', defaultMessage: 'Followers-only' },
21 direct: { id: 'privacy.direct.short', defaultMessage: 'Direct' },
25 export default class StatusHeader
extends React
.PureComponent
{
28 status: ImmutablePropTypes
.map
.isRequired
,
29 friend: ImmutablePropTypes
.map
,
30 mediaIcon: PropTypes
.string
,
31 collapsible: PropTypes
.bool
,
32 collapsed: PropTypes
.bool
,
33 parseClick: PropTypes
.func
.isRequired
,
34 setExpansion: PropTypes
.func
.isRequired
,
35 intl: PropTypes
.object
.isRequired
,
38 // Handles clicks on collapsed button
39 handleCollapsedClick
= (e
) => {
40 const { collapsed
, setExpansion
} = this.props
;
42 setExpansion(collapsed
? null : false);
47 // Handles clicks on account name/image
48 handleAccountClick
= (e
) => {
49 const { status
, parseClick
} = this.props
;
50 parseClick(e
, `/accounts/${+status.getIn(['account', 'id'])}`);
64 const account
= status
.get('account');
67 <header className
='status__info'>
69 href
={account
.get('url')}
71 className
='status__avatar'
72 onClick
={this.handleAccountClick
}
76 <AvatarOverlay account
={account
} friend
={friend
} />
78 <Avatar account
={account
} size
={48} />
83 href
={account
.get('url')}
85 className
='status__display-name'
86 onClick
={this.handleAccountClick
}
88 <DisplayName account
={account
} />
90 <div className
='status__info__icons'>
93 className
={`fa fa-fw fa-${mediaIcon}`}
98 <VisibilityIcon visibility
={status
.get('visibility')} />
102 className
='status__collapse-button'
107 intl
.formatMessage(messages
.uncollapse
) :
108 intl
.formatMessage(messages
.collapse
)
110 icon
='angle-double-up'
111 onClick
={this.handleCollapsedClick
}