Make sure to discard a draft whenever we're saving. Release-Notes: fixes deletion of patchset comment right before saving. Google-Bug-Id: b/309970044, b/309533366 Change-Id: I420fd0193f4911aca85b26989ebfa60f784f90d7
diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts index 7a8779d..459ff0f 100644 --- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts +++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
@@ -1452,13 +1452,19 @@ await this.save(); } - convertToCommentInput(): CommentInput | undefined { + async convertToCommentInputAndOrDiscard(): Promise<CommentInput | undefined> { if (!this.somethingToSave() || !this.comment) return; - return convertToCommentInput({ - ...this.comment, - message: this.messageText.trimEnd(), - unresolved: this.unresolved, - }); + const messageToSave = this.messageText.trimEnd(); + if (messageToSave === '') { + await this.getCommentsModel().discardDraft(id(this.comment)); + return undefined; + } else { + return convertToCommentInput({ + ...this.comment, + message: this.messageText.trimEnd(), + unresolved: this.unresolved, + }); + } } async save() {
diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts index a01d3a4..03d8e32 100644 --- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts +++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
@@ -734,6 +734,21 @@ assert.isFalse(saveStub.called); }); + test('converting to input for empty text calls discard()', async () => { + const saveStub = sinon.stub(commentsModel, 'saveDraft'); + const discardStub = sinon.stub(commentsModel, 'discardDraft'); + element.comment = createDraft(); + element.editing = true; + await element.updateComplete; + + element.messageText = ''; + await element.updateComplete; + + await element.convertToCommentInputAndOrDiscard(); + assert.isTrue(discardStub.called); + assert.isFalse(saveStub.called); + }); + test('handlePleaseFix fires reply-to-comment event', async () => { const listener = listenOnce<ReplyToCommentEvent>( element,