Commit 5edd0e66 authored by Phil Hughes's avatar Phil Hughes

Fix race condition with dispatcher.js

The dispatcher was trying to create a new instance of a class that is loaded in a file after main.js which would cause the filtered search to not work on issues. This would only happen on the first load when the JS is not cached. If the JS is cached, then everything will be fine.
parent 72360817
...@@ -43,6 +43,10 @@ $(() => { ...@@ -43,6 +43,10 @@ $(() => {
$components.each(function () { $components.each(function () {
const $this = $(this); const $this = $(this);
const noteId = $this.attr(':note-id'); const noteId = $this.attr(':note-id');
const discussionId = $this.attr(':discussion-id');
if ($this.is('comment-and-resolve-btn') && !discussionId) return;
const tmp = Vue.extend({ const tmp = Vue.extend({
template: $this.get(0).outerHTML template: $this.get(0).outerHTML
}); });
......
...@@ -712,7 +712,7 @@ import initGroupAnalytics from './init_group_analytics'; ...@@ -712,7 +712,7 @@ import initGroupAnalytics from './init_group_analytics';
return Dispatcher; return Dispatcher;
})(); })();
$(function() { $(window).on('load', function() {
new Dispatcher(); new Dispatcher();
}); });
}).call(window); }).call(window);
...@@ -135,8 +135,9 @@ import './project_select'; ...@@ -135,8 +135,9 @@ import './project_select';
import './project_show'; import './project_show';
import './project_variables'; import './project_variables';
import './projects_list'; import './projects_list';
import './render_gfm'; import './syntax_highlight';
import './render_math'; import './render_math';
import './render_gfm';
import './right_sidebar'; import './right_sidebar';
import './search'; import './search';
import './search_autocomplete'; import './search_autocomplete';
...@@ -144,7 +145,6 @@ import './smart_interval'; ...@@ -144,7 +145,6 @@ import './smart_interval';
import './star'; import './star';
import './subscription'; import './subscription';
import './subscription_select'; import './subscription_select';
import './syntax_highlight';
// EE-only scripts // EE-only scripts
import './admin_email_select'; import './admin_email_select';
......
...@@ -11,7 +11,5 @@ ...@@ -11,7 +11,5 @@
return this; return this;
}; };
$(document).on('ready load', function() { $(() => $('body').renderGFM());
return $('body').renderGFM();
});
}).call(window); }).call(window);
...@@ -2,7 +2,7 @@ module VersionCheckHelper ...@@ -2,7 +2,7 @@ module VersionCheckHelper
def version_status_badge def version_status_badge
if Rails.env.production? && current_application_settings.version_check_enabled if Rails.env.production? && current_application_settings.version_check_enabled
image_url = VersionCheck.new.url image_url = VersionCheck.new.url
image_tag image_url, class: 'js-version-status-badge', lazy: false image_tag image_url, class: 'js-version-status-badge'
end end
end end
end end
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
= link_to 'Close merge request', merge_request_path(@merge_request, merge_request: { state_event: :close }), method: :put, class: "btn btn-nr btn-comment btn-close close-mr-link js-note-target-close", title: "Close merge request", data: { original_text: "Close merge request", alternative_text: "Comment & close merge request"} = link_to 'Close merge request', merge_request_path(@merge_request, merge_request: { state_event: :close }), method: :put, class: "btn btn-nr btn-comment btn-close close-mr-link js-note-target-close", title: "Close merge request", data: { original_text: "Close merge request", alternative_text: "Comment & close merge request"}
- if @merge_request.reopenable? - if @merge_request.reopenable?
= link_to 'Reopen merge request', merge_request_path(@merge_request, merge_request: { state_event: :reopen }), method: :put, class: "btn btn-nr btn-comment btn-reopen reopen-mr-link js-note-target-close js-note-target-reopen", title: "Reopen merge request", data: { original_text: "Reopen merge request", alternative_text: "Comment & reopen merge request"} = link_to 'Reopen merge request', merge_request_path(@merge_request, merge_request: { state_event: :reopen }), method: :put, class: "btn btn-nr btn-comment btn-reopen reopen-mr-link js-note-target-close js-note-target-reopen", title: "Reopen merge request", data: { original_text: "Reopen merge request", alternative_text: "Comment & reopen merge request"}
%comment-and-resolve-btn{ "inline-template" => true, ":discussion-id" => "" } %comment-and-resolve-btn{ "inline-template" => true }
%button.btn.btn-nr.btn-default.append-right-10.js-comment-resolve-button{ "v-if" => "showButton", type: "submit", data: { project_path: "#{project_path(@merge_request.project)}" } } %button.btn.btn-nr.btn-default.append-right-10.js-comment-resolve-button{ "v-if" => "showButton", type: "submit", data: { project_path: "#{project_path(@merge_request.project)}" } }
{{ buttonText }} {{ buttonText }}
......
...@@ -28,11 +28,12 @@ feature 'Merge request conflict resolution', js: true do ...@@ -28,11 +28,12 @@ feature 'Merge request conflict resolution', js: true do
end end
click_button 'Commit conflict resolution' click_button 'Commit conflict resolution'
wait_for_requests
expect(page).to have_content('All merge conflicts were resolved') expect(page).to have_content('All merge conflicts were resolved')
merge_request.reload_diff merge_request.reload_diff
wait_for_requests
click_on 'Changes' click_on 'Changes'
wait_for_requests wait_for_requests
...@@ -69,10 +70,12 @@ feature 'Merge request conflict resolution', js: true do ...@@ -69,10 +70,12 @@ feature 'Merge request conflict resolution', js: true do
end end
click_button 'Commit conflict resolution' click_button 'Commit conflict resolution'
wait_for_requests
expect(page).to have_content('All merge conflicts were resolved') expect(page).to have_content('All merge conflicts were resolved')
merge_request.reload_diff merge_request.reload_diff
wait_for_requests
click_on 'Changes' click_on 'Changes'
wait_for_requests wait_for_requests
...@@ -140,12 +143,13 @@ feature 'Merge request conflict resolution', js: true do ...@@ -140,12 +143,13 @@ feature 'Merge request conflict resolution', js: true do
end end
click_button 'Commit conflict resolution' click_button 'Commit conflict resolution'
wait_for_requests
expect(page).to have_content('All merge conflicts were resolved') expect(page).to have_content('All merge conflicts were resolved')
merge_request.reload_diff merge_request.reload_diff
wait_for_requests
click_on 'Changes' click_on 'Changes'
wait_for_requests wait_for_requests
click_link 'Expand all' click_link 'Expand all'
......
...@@ -23,7 +23,7 @@ describe VersionCheckHelper do ...@@ -23,7 +23,7 @@ describe VersionCheckHelper do
end end
it 'should have a js prefixed css class' do it 'should have a js prefixed css class' do
expect(@image_tag).to match(/class="js-version-status-badge"/) expect(@image_tag).to match(/class="js-version-status-badge lazy"/)
end end
it 'should have a VersionCheck url as the src' do it 'should have a VersionCheck url as the src' do
......
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