From 4c582cf1b6d9d9a348dd6efc6c337a0b1754bb8e Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 23 Jun 2020 12:52:07 -0400 Subject: Making sure new comments don't clear out your current textarea. - Making a better random string generator. - Doing better incoming comment checking. - Fixes #769 --- ui/src/components/comment-form.tsx | 44 +++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 17 deletions(-) (limited to 'ui/src/components') diff --git a/ui/src/components/comment-form.tsx b/ui/src/components/comment-form.tsx index 24bfb7cb..0fb7824e 100644 --- a/ui/src/components/comment-form.tsx +++ b/ui/src/components/comment-form.tsx @@ -245,18 +245,32 @@ export class CommentForm extends Component { }); } - handleFinished() { - this.state.previewMode = false; - this.state.loading = false; - this.state.commentForm.content = ''; - this.setState(this.state); - let form: any = document.getElementById(this.formId); - form.reset(); - if (this.props.node) { - this.props.onReplyCancel(); + handleFinished(data: CommentResponse) { + let isReply = + this.props.node !== undefined && data.comment.parent_id !== null; + let xor = + +!(data.comment.parent_id !== null) ^ +(this.props.node !== undefined); + + if ( + (data.comment.creator_id == UserService.Instance.user.id && + // If its a reply, make sure parent child match + isReply && + data.comment.parent_id == this.props.node.comment.id) || + // Otherwise, check the XOR of the two + (!isReply && xor) + ) { + this.state.previewMode = false; + this.state.loading = false; + this.state.commentForm.content = ''; + this.setState(this.state); + let form: any = document.getElementById(this.formId); + form.reset(); + if (this.props.node) { + this.props.onReplyCancel(); + } + autosize.update(form); + this.setState(this.state); } - autosize.update(document.querySelector('textarea')); - this.setState(this.state); } handleCommentSubmit(i: CommentForm, event: any) { @@ -359,14 +373,10 @@ export class CommentForm extends Component { if (UserService.Instance.user) { if (res.op == UserOperation.CreateComment) { let data = res.data as CommentResponse; - if (data.comment.creator_id == UserService.Instance.user.id) { - this.handleFinished(); - } + this.handleFinished(data); } else if (res.op == UserOperation.EditComment) { let data = res.data as CommentResponse; - if (data.comment.creator_id == UserService.Instance.user.id) { - this.handleFinished(); - } + this.handleFinished(data); } } } -- cgit v1.2.3