mirror of
https://github.com/go-gitea/gitea.git
synced 2024-06-08 17:16:11 +02:00
UI: Fix race in update issue labels and assignees (#6194)
Fix #6191 * fix issue update race condition * fix similar race same race when clearing assignee * always load promise polyfill * replace es6-promise with promise-polyfill * move promise-polyfill to <head>
This commit is contained in:
parent
4a2e92bcd1
commit
8e266c3193
|
@ -216,17 +216,19 @@ function initBranchSelector() {
|
|||
});
|
||||
}
|
||||
|
||||
function updateIssuesMeta(url, action, issueIds, elementId, afterSuccess) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url,
|
||||
data: {
|
||||
"_csrf": csrf,
|
||||
"action": action,
|
||||
"issue_ids": issueIds,
|
||||
"id": elementId
|
||||
},
|
||||
success: afterSuccess
|
||||
function updateIssuesMeta(url, action, issueIds, elementId) {
|
||||
return new Promise(function(resolve) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url,
|
||||
data: {
|
||||
"_csrf": csrf,
|
||||
"action": action,
|
||||
"issue_ids": issueIds,
|
||||
"id": elementId
|
||||
},
|
||||
success: resolve
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -348,6 +350,10 @@ function uploadFile(file, callback) {
|
|||
xhr.send(formData);
|
||||
}
|
||||
|
||||
function reload() {
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
function initImagePaste(target) {
|
||||
target.each(function(i, field) {
|
||||
field.addEventListener('paste', function(event){
|
||||
|
@ -385,18 +391,20 @@ function initCommentForm() {
|
|||
$('.' + selector).dropdown('setting', 'onHide', function(){
|
||||
hasLabelUpdateAction = $listMenu.data('action') == 'update'; // Update the var
|
||||
if (hasLabelUpdateAction) {
|
||||
var promises = [];
|
||||
for (var elementId in labels) {
|
||||
if (labels.hasOwnProperty(elementId)) {
|
||||
var label = labels[elementId];
|
||||
updateIssuesMeta(
|
||||
var promise = updateIssuesMeta(
|
||||
label["update-url"],
|
||||
label["action"],
|
||||
label["issue-id"],
|
||||
elementId
|
||||
);
|
||||
promises.push(promise);
|
||||
}
|
||||
}
|
||||
location.reload();
|
||||
Promise.all(promises).then(reload);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -479,8 +487,7 @@ function initCommentForm() {
|
|||
"clear",
|
||||
$listMenu.data('issue-id'),
|
||||
""
|
||||
);
|
||||
$listMenu.data('action', 'update'); // Update to reload the page when we updated items
|
||||
).then(reload);
|
||||
}
|
||||
|
||||
$(this).parent().find('.item').each(function () {
|
||||
|
@ -518,9 +525,8 @@ function initCommentForm() {
|
|||
$menu.data('update-url'),
|
||||
"",
|
||||
$menu.data('issue-id'),
|
||||
$(this).data('id'),
|
||||
function() { location.reload(); }
|
||||
);
|
||||
$(this).data('id')
|
||||
).then(reload);
|
||||
}
|
||||
switch (input_id) {
|
||||
case '#milestone_id':
|
||||
|
@ -545,9 +551,8 @@ function initCommentForm() {
|
|||
$menu.data('update-url'),
|
||||
"",
|
||||
$menu.data('issue-id'),
|
||||
$(this).data('id'),
|
||||
function() { location.reload(); }
|
||||
);
|
||||
$(this).data('id')
|
||||
).then(reload);
|
||||
}
|
||||
|
||||
$list.find('.selected').html('');
|
||||
|
@ -801,7 +806,7 @@ function initRepository() {
|
|||
function (data) {
|
||||
$editInput.val(data.title);
|
||||
$issueTitle.text(data.title);
|
||||
location.reload();
|
||||
reload();
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
@ -1786,7 +1791,7 @@ function u2fRegistered(resp) {
|
|||
data: JSON.stringify(resp),
|
||||
contentType: "application/json; charset=utf-8",
|
||||
success: function(){
|
||||
window.location.reload();
|
||||
reload();
|
||||
},
|
||||
fail: function (xhr, textStatus) {
|
||||
u2fError(1);
|
||||
|
@ -2073,9 +2078,7 @@ $(document).ready(function () {
|
|||
return this.dataset.issueId;
|
||||
}).get().join();
|
||||
var url = this.dataset.url
|
||||
updateIssuesMeta(url, action, issueIDs, elementId, function() {
|
||||
location.reload();
|
||||
});
|
||||
updateIssuesMeta(url, action, issueIDs, elementId).then(reload);
|
||||
});
|
||||
|
||||
buttonsClickOnEnter();
|
||||
|
@ -2912,7 +2915,7 @@ function updateDeadline(deadlineString) {
|
|||
contentType: 'application/json',
|
||||
type: 'POST',
|
||||
success: function () {
|
||||
window.location.reload();
|
||||
reload();
|
||||
},
|
||||
error: function () {
|
||||
$('#deadline-loader').removeClass('loading');
|
||||
|
|
|
@ -146,9 +146,9 @@
|
|||
<td><a href="https://github.com/moment/moment/archive/2.22.2.tar.gz">0.4.1.tar.gz</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="./plugins/es6-promise/">es6-promise</a></td>
|
||||
<td><a href="https://github.com/stefanpenner/es6-promise/blob/master/LICENSE">MIT</a></td>
|
||||
<td><a href="https://github.com/stefanpenner/es6-promise/archive/v4.2.6.tar.gz">4.2.6.tar.gz</a></td>
|
||||
<td><a href="./plugins/promise-polyfill/">promise-polyfill</a></td>
|
||||
<td><a href="https://github.com/taylorhakes/promise-polyfill/blob/master/LICENSE">MIT</a></td>
|
||||
<td><a href="https://github.com/taylorhakes/promise-polyfill/archive/8.1.0.tar.gz">8.1.0.tar.gz</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -122,7 +122,6 @@
|
|||
<script src="{{AppSubUrl}}/vendor/plugins/semantic/semantic.min.js"></script>
|
||||
<script src="{{AppSubUrl}}/js/index.js?v={{MD5 AppVer}}"></script>
|
||||
{{if .EnableHeatmap}}
|
||||
<script src="{{AppSubUrl}}/vendor/plugins/es6-promise/es6-promise.auto.min.js" charset="utf-8"></script>
|
||||
<script src="{{AppSubUrl}}/vendor/plugins/moment/moment.min.js" charset="utf-8"></script>
|
||||
<script src="{{AppSubUrl}}/vendor/plugins/vue-calendar-heatmap/vue-calendar-heatmap.browser.js" charset="utf-8"></script>
|
||||
<script type="text/javascript">
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
{{end}}
|
||||
<style class="list-search-style"></style>
|
||||
|
||||
<script src="{{AppSubUrl}}/vendor/plugins/promise-polyfill/polyfill.min.js"></script>
|
||||
<script src="{{AppSubUrl}}/vendor/plugins/cssrelpreload/loadCSS.min.js"></script>
|
||||
<script src="{{AppSubUrl}}/vendor/plugins/cssrelpreload/cssrelpreload.min.js"></script>
|
||||
{{if .PageIsUserProfile}}
|
||||
|
|
Loading…
Reference in New Issue