mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2024-11-27 01:25:52 -05:00
Show the username of the person being replied to in a comment on preview
This commit is contained in:
parent
505dda09ae
commit
d982d2d723
2 changed files with 26 additions and 1 deletions
|
@ -93,6 +93,7 @@ class Comment extends React.Component {
|
|||
datetimeCreated,
|
||||
id,
|
||||
projectId,
|
||||
replyUsername,
|
||||
visibility
|
||||
} = this.props;
|
||||
|
||||
|
@ -160,7 +161,13 @@ class Comment extends React.Component {
|
|||
* @user links in replies
|
||||
* links to scratch.mit.edu pages
|
||||
*/}
|
||||
<span className="comment-content">{content}</span>
|
||||
|
||||
<span className="comment-content">
|
||||
{replyUsername && (
|
||||
<a href={`/users/${replyUsername}`}>@{replyUsername} </a>
|
||||
)}
|
||||
{content}
|
||||
</span>
|
||||
<FlexRow className="comment-bottom-row">
|
||||
<span className="comment-time">
|
||||
<FormattedRelative value={new Date(datetimeCreated)} />
|
||||
|
@ -228,6 +235,7 @@ Comment.propTypes = {
|
|||
onReport: PropTypes.func,
|
||||
onRestore: PropTypes.func,
|
||||
projectId: PropTypes.string,
|
||||
replyUsername: PropTypes.string,
|
||||
visibility: PropTypes.string
|
||||
};
|
||||
|
||||
|
|
|
@ -22,6 +22,9 @@ class TopLevelComment extends React.Component {
|
|||
this.state = {
|
||||
expanded: false
|
||||
};
|
||||
|
||||
// A cache of {commentId: username, ...} in order to show reply usernames
|
||||
this.commentUsernameCache = {};
|
||||
}
|
||||
|
||||
handleExpandThread () {
|
||||
|
@ -50,6 +53,19 @@ class TopLevelComment extends React.Component {
|
|||
this.props.onAddComment(comment, this.props.id);
|
||||
}
|
||||
|
||||
commentUsername (parentId) {
|
||||
if (this.commentUsernameCache[parentId]) return this.commentUsernameCache[parentId];
|
||||
|
||||
// If the cache misses, rebuild it. Every reply has a parent id that is
|
||||
// either a reply to this top level comment or to one of the replies.
|
||||
this.commentUsernameCache[this.props.id] = this.props.author.username;
|
||||
const replies = this.props.replies;
|
||||
for (let i = 0; i < replies.length; i++) {
|
||||
this.commentUsernameCache[replies[i].id] = replies[i].author.username;
|
||||
}
|
||||
return this.commentUsernameCache[parentId];
|
||||
}
|
||||
|
||||
render () {
|
||||
const {
|
||||
author,
|
||||
|
@ -111,6 +127,7 @@ class TopLevelComment extends React.Component {
|
|||
id={reply.id}
|
||||
key={reply.id}
|
||||
projectId={projectId}
|
||||
replyUsername={this.commentUsername(reply.parent_id)}
|
||||
visibility={reply.visibility}
|
||||
onAddComment={this.handleAddComment}
|
||||
onDelete={this.handleDeleteReply}
|
||||
|
|
Loading…
Reference in a new issue