PLT-4860 Make ProfilePopover into it's own component and use it consistently everywhere (#4701)

* PLT-4860 - Use same User Popover everywhere.

Refactor out the ProfilePopover into it's own component and give it the
union of all the features of the previous two implementations, and make
sure all the necessary data for it to work consistently everywhere is
provided through the props wherever it is used.

* Don't show popover for webhook posts in main view.

* No popover on RHS when it's a webhook post.

* Fix style.

* Don't send in user when it's a system message.

* Fix some duplication of code.
Этот коммит содержится в:
George Goldberg
2016-12-22 17:19:19 +00:00
коммит произвёл enahum
родитель 52c4538817
Коммит a857cf18f4
10 изменённых файлов: 440 добавлений и 253 удалений

Просмотреть файл

@@ -47,6 +47,10 @@ export default class RhsRootPost extends React.Component {
return true;
}
if (nextProps.isBusy !== this.props.isBusy) {
return true;
}
if (nextProps.compactDisplay !== this.props.compactDisplay) {
return true;
}
@@ -248,7 +252,13 @@ export default class RhsRootPost extends React.Component {
);
}
let userProfile = <UserProfile user={user}/>;
let userProfile = (
<UserProfile
user={user}
status={this.props.status}
isBusy={this.props.isBusy}
/>
);
let botIndicator;
if (post.props && post.props.from_webhook) {
@@ -260,6 +270,13 @@ export default class RhsRootPost extends React.Component {
disablePopover={true}
/>
);
} else {
userProfile = (
<UserProfile
user={user}
disablePopover={true}
/>
);
}
botIndicator = <li className='col col__name bot-indicator'>{'BOT'}</li>;
@@ -286,9 +303,20 @@ export default class RhsRootPost extends React.Component {
width='36'
height='36'
user={this.props.user}
isBusy={this.props.isBusy}
/>
);
if (post.props && post.props.from_webhook) {
profilePic = (
<ProfilePicture
src={PostUtils.getProfilePicSrcForPost(post, timestamp)}
width='36'
height='36'
/>
);
}
if (PostUtils.isSystemMessage(post)) {
profilePic = (
<span
@@ -302,13 +330,22 @@ export default class RhsRootPost extends React.Component {
if (this.props.compactDisplay) {
compactClass = 'post--compact';
profilePic = (
<ProfilePicture
src=''
status={status}
user={this.props.user}
/>
);
if (post.props && post.props.from_webhook) {
profilePic = (
<ProfilePicture
src=''
/>
);
} else {
profilePic = (
<ProfilePicture
src=''
status={status}
user={this.props.user}
isBusy={this.props.isBusy}
/>
);
}
}
const profilePicContainer = (<div className='post__img'>{profilePic}</div>);
@@ -424,5 +461,6 @@ RhsRootPost.propTypes = {
useMilitaryTime: React.PropTypes.bool.isRequired,
isFlagged: React.PropTypes.bool,
status: React.PropTypes.string,
previewCollapsed: React.PropTypes.string
previewCollapsed: React.PropTypes.string,
isBusy: React.PropTypes.bool
};