Don't store PostUser instance in CommentPost (#2184)

* Don't save component state in CommentPost
This commit is contained in:
Alexander Skvortsov 2020-06-18 20:10:25 -04:00 committed by GitHub
parent ed566cd18f
commit 62fe9db732
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 31 deletions

View File

@ -31,13 +31,7 @@ export default class CommentPost extends Post {
*/
this.revealContent = false;
// Create an instance of the component that displays the post's author so
// that we can force the post to rerender when the user card is shown.
this.postUser = new PostUser({ post: this.props.post });
this.subtree.check(
() => this.postUser.cardVisible,
() => this.isEditing()
);
this.subtree.check(() => this.isEditing());
}
content() {
@ -129,13 +123,12 @@ export default class CommentPost extends Post {
headerItems() {
const items = new ItemList();
const post = this.props.post;
const props = { post };
items.add('user', this.postUser.render(), 100);
items.add('meta', PostMeta.component(props));
items.add('user', PostUser.component({ post }), 100);
items.add('meta', PostMeta.component({ post }));
if (post.isEdited() && !post.isHidden()) {
items.add('edited', PostEdited.component(props));
items.add('edited', PostEdited.component({ post }));
}
// If the post is hidden, add a button that allows toggling the visibility

View File

@ -13,15 +13,6 @@ import listItems from '../../common/helpers/listItems';
* - `post`
*/
export default class PostUser extends Component {
init() {
/**
* Whether or not the user hover card is visible.
*
* @type {Boolean}
*/
this.cardVisible = false;
}
view() {
const post = this.props.post;
const user = post.user();
@ -38,7 +29,7 @@ export default class PostUser extends Component {
let card = '';
if (!post.isHidden() && this.cardVisible) {
if (!post.isHidden()) {
card = UserCard.component({
user,
className: 'UserCard--popover',
@ -81,10 +72,6 @@ export default class PostUser extends Component {
* Show the user card.
*/
showCard() {
this.cardVisible = true;
m.redraw();
setTimeout(() => this.$('.UserCard').addClass('in'));
}
@ -92,11 +79,6 @@ export default class PostUser extends Component {
* Hide the user card.
*/
hideCard() {
this.$('.UserCard')
.removeClass('in')
.one('transitionend webkitTransitionEnd oTransitionEnd', () => {
this.cardVisible = false;
m.redraw();
});
this.$('.UserCard').removeClass('in');
}
}