Commit 3599d9ab authored by Phil Hughes's avatar Phil Hughes

Merge branch '24373-warning-message-go-away' into 'master'

Notes warning message should go away once resolved

Closes #24373

See merge request !10823
parents 21c96a65 1fe6beae
...@@ -47,6 +47,7 @@ const normalizeNewlines = function(str) { ...@@ -47,6 +47,7 @@ const normalizeNewlines = function(str) {
this.keydownNoteText = this.keydownNoteText.bind(this); this.keydownNoteText = this.keydownNoteText.bind(this);
this.toggleCommitList = this.toggleCommitList.bind(this); this.toggleCommitList = this.toggleCommitList.bind(this);
this.postComment = this.postComment.bind(this); this.postComment = this.postComment.bind(this);
this.clearFlashWrapper = this.clearFlash.bind(this);
this.notes_url = notes_url; this.notes_url = notes_url;
this.note_ids = note_ids; this.note_ids = note_ids;
...@@ -57,6 +58,7 @@ const normalizeNewlines = function(str) { ...@@ -57,6 +58,7 @@ const normalizeNewlines = function(str) {
this.notesCountBadge || (this.notesCountBadge = $(".issuable-details").find(".notes-tab .badge")); this.notesCountBadge || (this.notesCountBadge = $(".issuable-details").find(".notes-tab .badge"));
this.basePollingInterval = 15000; this.basePollingInterval = 15000;
this.maxPollingSteps = 4; this.maxPollingSteps = 4;
this.flashErrors = [];
this.cleanBinding(); this.cleanBinding();
this.addBinding(); this.addBinding();
...@@ -298,7 +300,7 @@ const normalizeNewlines = function(str) { ...@@ -298,7 +300,7 @@ const normalizeNewlines = function(str) {
if (!noteEntity.valid) { if (!noteEntity.valid) {
if (noteEntity.errors.commands_only) { if (noteEntity.errors.commands_only) {
new Flash(noteEntity.errors.commands_only, 'notice', this.parentTimeline); this.addFlash(noteEntity.errors.commands_only, 'notice', this.parentTimeline);
this.refresh(); this.refresh();
} }
return; return;
...@@ -551,14 +553,14 @@ const normalizeNewlines = function(str) { ...@@ -551,14 +553,14 @@ const normalizeNewlines = function(str) {
return this.renderNote(note); return this.renderNote(note);
}; };
Notes.prototype.addNoteError = ($form) => { Notes.prototype.addNoteError = function($form) {
let formParentTimeline; let formParentTimeline;
if ($form.hasClass('js-main-target-form')) { if ($form.hasClass('js-main-target-form')) {
formParentTimeline = $form.parents('.timeline'); formParentTimeline = $form.parents('.timeline');
} else if ($form.hasClass('js-discussion-note-form')) { } else if ($form.hasClass('js-discussion-note-form')) {
formParentTimeline = $form.closest('.discussion-notes').find('.notes'); formParentTimeline = $form.closest('.discussion-notes').find('.notes');
} }
return new Flash('Your comment could not be submitted! Please check your network connection and try again.', 'alert', formParentTimeline); return this.addFlash('Your comment could not be submitted! Please check your network connection and try again.', 'alert', formParentTimeline);
}; };
Notes.prototype.updateNoteError = $parentTimeline => new Flash('Your comment could not be updated! Please check your network connection and try again.'); Notes.prototype.updateNoteError = $parentTimeline => new Flash('Your comment could not be updated! Please check your network connection and try again.');
...@@ -1101,6 +1103,15 @@ const normalizeNewlines = function(str) { ...@@ -1101,6 +1103,15 @@ const normalizeNewlines = function(str) {
}); });
}; };
Notes.prototype.addFlash = function(...flashParams) {
this.flashErrors.push(new Flash(...flashParams));
};
Notes.prototype.clearFlash = function() {
this.flashErrors.forEach(flash => flash.flashContainer.remove());
this.flashErrors = [];
};
Notes.prototype.cleanForm = function($form) { Notes.prototype.cleanForm = function($form) {
// Remove JS classes that are not needed here // Remove JS classes that are not needed here
$form $form
...@@ -1279,6 +1290,8 @@ const normalizeNewlines = function(str) { ...@@ -1279,6 +1290,8 @@ const normalizeNewlines = function(str) {
.then((note) => { .then((note) => {
// Submission successful! remove placeholder // Submission successful! remove placeholder
$notesContainer.find(`#${uniqueId}`).remove(); $notesContainer.find(`#${uniqueId}`).remove();
// Clear previous form errors
this.clearFlashWrapper();
// Check if this was discussion comment // Check if this was discussion comment
if (isDiscussionForm) { if (isDiscussionForm) {
......
---
title: 'Notes: Warning message should go away once resolved'
merge_request: 10823
author: Jacopo Beschi @jacopo-beschi
...@@ -14,6 +14,7 @@ import '~/notes'; ...@@ -14,6 +14,7 @@ import '~/notes';
gl.utils = gl.utils || {}; gl.utils = gl.utils || {};
describe('Notes', function() { describe('Notes', function() {
const FLASH_TYPE_ALERT = 'alert';
var commentsTemplate = 'issues/issue_with_comment.html.raw'; var commentsTemplate = 'issues/issue_with_comment.html.raw';
preloadFixtures(commentsTemplate); preloadFixtures(commentsTemplate);
...@@ -498,5 +499,33 @@ import '~/notes'; ...@@ -498,5 +499,33 @@ import '~/notes';
expect($tempNote.find('.timeline-content').hasClass('discussion')).toBeTruthy(); expect($tempNote.find('.timeline-content').hasClass('discussion')).toBeTruthy();
}); });
}); });
describe('appendFlash', () => {
beforeEach(() => {
this.notes = new Notes();
});
it('shows a flash message', () => {
this.notes.addFlash('Error message', FLASH_TYPE_ALERT, this.notes.parentTimeline);
expect(document.querySelectorAll('.flash-alert').length).toBe(1);
});
});
describe('clearFlash', () => {
beforeEach(() => {
$(document).off('ajax:success');
this.notes = new Notes();
});
it('removes all the associated flash messages', () => {
this.notes.addFlash('Error message 1', FLASH_TYPE_ALERT, this.notes.parentTimeline);
this.notes.addFlash('Error message 2', FLASH_TYPE_ALERT, this.notes.parentTimeline);
this.notes.clearFlash();
expect(document.querySelectorAll('.flash-alert').length).toBe(0);
});
});
}); });
}).call(window); }).call(window);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment