Merge branch 'fix-multiple-ci-status-poll' into 'master'
Fixed potential issue with 2 ci status polling events happening Possible cause for double notifications was if the request was slow & then you changed page whilst this request was happening it would finish on another page & then launch another interval - this stops that issue. Also passed in the CI status as an option value rather than waiting for the first ajax request to finish See merge request !3869
This commit is contained in:
commit
952db59f07
2 changed files with 16 additions and 2 deletions
|
@ -10,6 +10,7 @@ class @MergeRequestWidget
|
|||
$('#modal_merge_info').modal(show: false)
|
||||
@firstCICheck = true
|
||||
@readyForCICheck = false
|
||||
@cancel = false
|
||||
clearInterval @fetchBuildStatusInterval
|
||||
|
||||
@clearEventListeners()
|
||||
|
@ -21,10 +22,16 @@ class @MergeRequestWidget
|
|||
clearEventListeners: ->
|
||||
$(document).off 'page:change.merge_request'
|
||||
|
||||
cancelPolling: ->
|
||||
@cancel = true
|
||||
|
||||
addEventListeners: ->
|
||||
allowedPages = ['show', 'commits', 'builds', 'changes']
|
||||
$(document).on 'page:change.merge_request', =>
|
||||
if $('body').data('page') isnt 'projects:merge_requests:show'
|
||||
page = $('body').data('page').split(':').last()
|
||||
if allowedPages.indexOf(page) < 0
|
||||
clearInterval @fetchBuildStatusInterval
|
||||
@cancelPolling()
|
||||
@clearEventListeners()
|
||||
|
||||
mergeInProgress: (deleteSourceBranch = false)->
|
||||
|
@ -67,6 +74,7 @@ class @MergeRequestWidget
|
|||
$('.ci-widget-fetching').show()
|
||||
|
||||
$.getJSON @opts.ci_status_url, (data) =>
|
||||
return if @cancel
|
||||
@readyForCICheck = true
|
||||
|
||||
if data.status is ''
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
check_enable: #{@merge_request.unchecked? ? "true" : "false"},
|
||||
ci_status_url: "#{ci_status_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)}",
|
||||
gitlab_icon: "#{asset_path 'gitlab_logo.png'}",
|
||||
ci_status: "",
|
||||
ci_status: "#{@merge_request.ci_commit ? @merge_request.ci_commit.status : ''}",
|
||||
ci_message: {
|
||||
normal: "Build {{status}} for \"{{title}}\"",
|
||||
preparing: "{{status}} build for \"{{title}}\""
|
||||
|
@ -26,4 +26,10 @@
|
|||
builds_path: "#{builds_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)}"
|
||||
};
|
||||
|
||||
if (typeof merge_request_widget !== 'undefined') {
|
||||
clearInterval(merge_request_widget.fetchBuildStatusInterval);
|
||||
merge_request_widget.cancelPolling();
|
||||
merge_request_widget.clearEventListeners();
|
||||
}
|
||||
|
||||
merge_request_widget = new MergeRequestWidget(opts);
|
||||
|
|
Loading…
Reference in a new issue