Render only one error message per diff
Move html to haml file instead of JS
This commit is contained in:
parent
b01fd7ad81
commit
a236b5e6a2
|
@ -1431,31 +1431,21 @@ export default class Notes {
|
||||||
syntaxHighlight(fileHolder);
|
syntaxHighlight(fileHolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
static renderDiffError($container) {
|
|
||||||
$container.find('.line_content').html(
|
|
||||||
$(`
|
|
||||||
<div class="js-error-load-lazy-diff nothing-here-block">
|
|
||||||
${sprintf(__('Unable to load the diff.%{buttonStartTag}Try again%{buttonEndTag}?'), {
|
|
||||||
buttonStartTag: '<button type="button" class="btn-link btn-no-padding js-toggle-lazy-diff">',
|
|
||||||
buttonEndTag: '</button>'
|
|
||||||
}, false)}
|
|
||||||
</div>
|
|
||||||
`),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
loadLazyDiff(e) {
|
loadLazyDiff(e) {
|
||||||
const $container = $(e.currentTarget).closest('.js-toggle-container');
|
const $container = $(e.currentTarget).closest('.js-toggle-container');
|
||||||
Notes.renderPlaceholderComponent($container);
|
Notes.renderPlaceholderComponent($container);
|
||||||
|
|
||||||
$container.find('.js-toggle-lazy-diff').removeClass('js-toggle-lazy-diff');
|
$container.find('.js-toggle-lazy-diff').removeClass('js-toggle-lazy-diff');
|
||||||
|
|
||||||
const tableEl = $container.find('tbody');
|
const $tableEl = $container.find('tbody');
|
||||||
if (tableEl.length === 0) return;
|
if ($tableEl.length === 0) return;
|
||||||
|
|
||||||
const fileHolder = $container.find('.file-holder');
|
const fileHolder = $container.find('.file-holder');
|
||||||
const url = fileHolder.data('linesPath');
|
const url = fileHolder.data('linesPath');
|
||||||
|
|
||||||
|
const $errorContainer = $container.find('.js-error-lazy-load-diff');
|
||||||
|
const $successContainer = $container.find('.js-success-lazy-load');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* We only fetch resolved discussions.
|
* We only fetch resolved discussions.
|
||||||
* Unresolved discussions don't have an endpoint being provided.
|
* Unresolved discussions don't have an endpoint being provided.
|
||||||
|
@ -1464,10 +1454,15 @@ export default class Notes {
|
||||||
axios
|
axios
|
||||||
.get(url)
|
.get(url)
|
||||||
.then(({ data }) => {
|
.then(({ data }) => {
|
||||||
|
// Reset state in case last request returned error
|
||||||
|
$successContainer.removeClass('hidden');
|
||||||
|
$errorContainer.addClass('hidden');
|
||||||
|
|
||||||
Notes.renderDiffContent($container, data);
|
Notes.renderDiffContent($container, data);
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
Notes.renderDiffError($container);
|
$successContainer.addClass('hidden');
|
||||||
|
$errorContainer.removeClass('hidden');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,11 @@
|
||||||
%tr.line_holder.line-holder-placeholder
|
%tr.line_holder.line-holder-placeholder
|
||||||
%td.old_line.diff-line-num
|
%td.old_line.diff-line-num
|
||||||
%td.new_line.diff-line-num
|
%td.new_line.diff-line-num
|
||||||
%td.line_content
|
%td.line_content.js-success-lazy-load
|
||||||
.js-code-placeholder
|
.js-code-placeholder
|
||||||
|
%td.line_content.js-error-lazy-load-diff.hidden
|
||||||
|
- button = button_tag(_("Try again"), class: "btn-link btn-no-padding js-toggle-lazy-diff")
|
||||||
|
= _("Unable to load the diff. %{button_try_again}").html_safe % { button_try_again: button}
|
||||||
= render "discussions/diff_discussion", discussions: [discussion], expanded: true
|
= render "discussions/diff_discussion", discussions: [discussion], expanded: true
|
||||||
- else
|
- else
|
||||||
- partial = (diff_file.new_file? || diff_file.deleted_file?) ? 'single_image_diff' : 'replaced_image_diff'
|
- partial = (diff_file.new_file? || diff_file.deleted_file?) ? 'single_image_diff' : 'replaced_image_diff'
|
||||||
|
|
|
@ -40,7 +40,7 @@ describe 'Merge request > User scrolls to note on load', :js do
|
||||||
expect(note_element.visible?).to eq true
|
expect(note_element.visible?).to eq true
|
||||||
|
|
||||||
page.within note_container do
|
page.within note_container do
|
||||||
expect(page).not_to have_selector('.js-error-load-lazy-diff')
|
expect(page).not_to have_selector('.js-error-lazy-load-diff')
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue