summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2017-09-11 14:13:54 -0400
committerBen Boeckel <ben.boeckel@kitware.com>2017-10-19 13:31:51 -0400
commit1d30e5e96434a0b9506baeda29680f347be11556 (patch)
treea591e802f4ec2a43d3dcf655e984026beadcb0c1
parentd0630ed38d9b7afa9f7099016507756ea5e77edf (diff)
downloadgitlab-ce-1d30e5e96434a0b9506baeda29680f347be11556.tar.gz
notes.js: use the original content when resetting the form
Otherwise, when an error occurred, the content was escaped and re-escaped on every error. Fixes #37724
-rw-r--r--app/assets/javascripts/notes.js4
-rw-r--r--spec/javascripts/notes_spec.js10
2 files changed, 12 insertions, 2 deletions
diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js
index 0e70999326a..5a6868be444 100644
--- a/app/assets/javascripts/notes.js
+++ b/app/assets/javascripts/notes.js
@@ -1417,7 +1417,7 @@ export default class Notes {
const isMainForm = $form.hasClass('js-main-target-form');
const isDiscussionForm = $form.hasClass('js-discussion-note-form');
const isDiscussionResolve = $submitBtn.hasClass('js-comment-resolve-button');
- const { formData, formContent, formAction } = this.getFormData($form);
+ const { formData, formContent, formAction, formContentOriginal } = this.getFormData($form);
let noteUniqueId;
let systemNoteUniqueId;
let hasQuickActions = false;
@@ -1576,7 +1576,7 @@ export default class Notes {
$form = $notesContainer.parent().find('form');
}
- $form.find('.js-note-text').val(formContent);
+ $form.find('.js-note-text').val(formContentOriginal);
this.reenableTargetFormSubmitButton(e);
this.addNoteError($form);
});
diff --git a/spec/javascripts/notes_spec.js b/spec/javascripts/notes_spec.js
index 66c52611614..4546b88e44d 100644
--- a/spec/javascripts/notes_spec.js
+++ b/spec/javascripts/notes_spec.js
@@ -103,6 +103,16 @@ import '~/notes';
$('.js-comment-button').click();
expect(this.autoSizeSpy).toHaveBeenTriggered();
});
+
+ it('should not place escaped text in the comment box in case of error', function() {
+ const deferred = $.Deferred();
+ spyOn($, 'ajax').and.returnValue(deferred.promise());
+ $(textarea).text('A comment with `markup`.');
+
+ deferred.reject();
+ $('.js-comment-button').click();
+ expect($(textarea).val()).toEqual('A comment with `markup`.');
+ });
});
describe('updateNote', () => {