Skip to content

Commit 3981f1b

Browse files
Remove duplicate logic in initListSubmits (#12660)
* Remove duplicate logic in initListSubmits Using the same logic to handle Choosing reviewers and assignees as choosing label. It's the first step of #10926. Signed-off-by: a1012112796 <1012112796@qq.com> * fix choose block * fix nit * try fix bug * simple code Co-authored-by: techknowlogick <techknowlogick@gitea.io>
1 parent ea775e6 commit 3981f1b

File tree

4 files changed

+49
-67
lines changed

4 files changed

+49
-67
lines changed

routers/repo/issue.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1516,10 +1516,11 @@ func updatePullReviewRequest(ctx *context.Context) {
15161516
}
15171517

15181518
reviewID := ctx.QueryInt64("id")
1519-
event := ctx.Query("is_add")
1519+
action := ctx.Query("action")
15201520

1521-
if event != "add" && event != "remove" {
1522-
ctx.ServerError("updatePullReviewRequest", fmt.Errorf("is_add should not be \"%s\"", event))
1521+
// TODO: Not support 'clear' now
1522+
if action != "attach" && action != "detach" {
1523+
ctx.Status(403)
15231524
return
15241525
}
15251526

@@ -1532,19 +1533,20 @@ func updatePullReviewRequest(ctx *context.Context) {
15321533
return
15331534
}
15341535

1535-
err = isLegalReviewRequest(reviewer, ctx.User, event == "add", issue)
1536+
err = isLegalReviewRequest(reviewer, ctx.User, action == "attach", issue)
15361537
if err != nil {
15371538
ctx.ServerError("isLegalRequestReview", err)
15381539
return
15391540
}
15401541

1541-
err = issue_service.ReviewRequest(issue, ctx.User, reviewer, event == "add")
1542+
err = issue_service.ReviewRequest(issue, ctx.User, reviewer, action == "attach")
15421543
if err != nil {
15431544
ctx.ServerError("ReviewRequest", err)
15441545
return
15451546
}
15461547
} else {
1547-
ctx.ServerError("updatePullReviewRequest", fmt.Errorf("%d in %d is not Pull Request", issue.ID, issue.Repo.ID))
1548+
ctx.Status(403)
1549+
return
15481550
}
15491551
}
15501552

templates/repo/issue/view_content/pull.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
{{end}}
5050

5151
{{if $canChoose }}
52-
<a href="#" class="ui poping up icon re-request-review" data-is-checked="{{if eq .Type 4}}remove{{else}}add{{end}}" data-issue-id="{{$.Issue.ID}}" data-content="{{ if eq .Type 4 }} {{$.i18n.Tr "repo.issues.remove_request_review"}} {{else}} {{$.i18n.Tr "repo.issues.re_request_review"}} {{end}}" data-id="{{.ReviewerID}}" data-update-url="{{$.RepoLink}}/issues/request_review">
52+
<a href="#" class="ui poping up icon re-request-review" data-is-checked="{{if eq .Type 4}}true{{else}}false{{end}}" data-issue-id="{{$.Issue.ID}}" data-content="{{ if eq .Type 4 }} {{$.i18n.Tr "repo.issues.remove_request_review"}} {{else}} {{$.i18n.Tr "repo.issues.re_request_review"}} {{end}}" data-id="{{.ReviewerID}}" data-update-url="{{$.RepoLink}}/issues/request_review">
5353
{{svg "octicon-sync" 16}}
5454
</a>
5555
{{end}}

templates/repo/issue/view_content/sidebar.tmpl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
{{svg "octicon-gear" 16}}
1313
{{end}}
1414
</span>
15-
<div class="filter menu" data-action="" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/request_review">
15+
<div class="filter menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/request_review">
1616
<div class="header" style="text-transform: none;font-size:16px;">{{.i18n.Tr "repo.issues.new.add_reviewer_title"}}</div>
1717
{{if .Reviewers}}
1818
<div class="ui icon search input">
@@ -44,7 +44,7 @@
4444
{{$canChoose = true}}
4545
{{end}}
4646

47-
<a class="{{if not $canChoose}}ui poping up{{end}} item {{if $checked}} checked {{end}}" href="#" data-id="{{.ID}}" data-id-selector="#review_request_{{.ID}}" data-can-change="{{if not $canChoose}}block{{end}}" {{if not $canChoose}} data-content="{{$.i18n.Tr "repo.issues.remove_request_review_block"}}"{{end}} data-is-checked="{{if $checked}}add{{else}}remove{{end}}">
47+
<a class="{{if not $canChoose}}ui poping up{{end}} item {{if $checked}} checked {{end}} {{if not $canChoose}}ban-change{{end}}" href="#" data-id="{{.ID}}" data-id-selector="#review_request_{{.ID}}" {{if not $canChoose}} data-content="{{$.i18n.Tr "repo.issues.remove_request_review_block"}}"{{end}}>
4848
<span class="octicon-check {{if not $checked}}invisible{{end}}">{{svg "octicon-check" 16}}</span>
4949
<span class="text">
5050
<img class="ui avatar image" src="{{.RelAvatarLink}}"> {{.GetDisplayName}}
@@ -78,7 +78,7 @@
7878
{{end}}
7979

8080
{{if $canChoose}}
81-
<a href="#" class="ui poping up icon re-request-review" data-is-checked="{{if eq .Type 4}}remove{{else}}add{{end}}" data-content="{{ if eq .Type 4 }} {{$.i18n.Tr "repo.issues.remove_request_review"}} {{else}} {{$.i18n.Tr "repo.issues.re_request_review"}} {{end}}" data-issue-id="{{$.Issue.ID}}" data-id="{{.ReviewerID}}" data-update-url="{{$.RepoLink}}/issues/request_review">
81+
<a href="#" class="ui poping up icon re-request-review" data-is-checked="{{if eq .Type 4}}true{{else}}false{{end}}" data-content="{{ if eq .Type 4 }} {{$.i18n.Tr "repo.issues.remove_request_review"}} {{else}} {{$.i18n.Tr "repo.issues.re_request_review"}} {{end}}" data-issue-id="{{$.Issue.ID}}" data-id="{{.ReviewerID}}" data-update-url="{{$.RepoLink}}/issues/request_review">
8282
{{svg "octicon-sync" 16}}
8383
</a>
8484
{{end}}
@@ -244,7 +244,7 @@
244244
{{svg "octicon-gear" 16}}
245245
{{end}}
246246
</span>
247-
<div class="filter menu" data-action="" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/assignee">
247+
<div class="filter menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/assignee">
248248
<div class="header" style="text-transform: none;font-size:16px;">{{.i18n.Tr "repo.issues.new.add_assignees_title"}}</div>
249249
<div class="ui icon search input">
250250
<i class="search icon"></i>

web_src/js/index.js

Lines changed: 36 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ function initLabelEdit() {
157157
});
158158
}
159159

160-
function updateIssuesMeta(url, action, issueIds, elementId, isAdd) {
160+
function updateIssuesMeta(url, action, issueIds, elementId) {
161161
return new Promise(((resolve) => {
162162
$.ajax({
163163
type: 'POST',
@@ -167,7 +167,6 @@ function updateIssuesMeta(url, action, issueIds, elementId, isAdd) {
167167
action,
168168
issue_ids: issueIds,
169169
id: elementId,
170-
is_add: isAdd
171170
},
172171
success: resolve
173172
});
@@ -373,89 +372,70 @@ function initCommentForm() {
373372
const $list = $(`.ui.${outerSelector}.list`);
374373
const $noSelect = $list.find('.no-select');
375374
const $listMenu = $(`.${selector} .menu`);
376-
let hasLabelUpdateAction = $listMenu.data('action') === 'update';
377-
const labels = {};
375+
let hasUpdateAction = $listMenu.data('action') === 'update';
376+
const items = {};
378377

379378
$(`.${selector}`).dropdown('setting', 'onHide', () => {
380-
hasLabelUpdateAction = $listMenu.data('action') === 'update'; // Update the var
381-
if (hasLabelUpdateAction) {
379+
hasUpdateAction = $listMenu.data('action') === 'update'; // Update the var
380+
if (hasUpdateAction) {
382381
const promises = [];
383-
Object.keys(labels).forEach((elementId) => {
384-
const label = labels[elementId];
382+
Object.keys(items).forEach((elementId) => {
383+
const item = items[elementId];
385384
const promise = updateIssuesMeta(
386-
label['update-url'],
387-
label.action,
388-
label['issue-id'],
385+
item['update-url'],
386+
item.action,
387+
item['issue-id'],
389388
elementId,
390-
label['is-checked']
391389
);
392390
promises.push(promise);
393391
});
394392
Promise.all(promises).then(reload);
395393
}
396394
});
397395

398-
$listMenu.find('.item:not(.no-select)').on('click', function () {
399-
// we don't need the action attribute when updating assignees
400-
if (selector === 'select-assignees-modify' || selector === 'select-reviewers-modify') {
401-
// UI magic. We need to do this here, otherwise it would destroy the functionality of
402-
// adding/removing labels
403-
404-
if ($(this).data('can-change') === 'block') {
405-
return false;
406-
}
407-
408-
if ($(this).hasClass('checked')) {
409-
$(this).removeClass('checked');
410-
$(this).find('.octicon-check').addClass('invisible');
411-
$(this).data('is-checked', 'remove');
412-
} else {
413-
$(this).addClass('checked');
414-
$(this).find('.octicon-check').removeClass('invisible');
415-
$(this).data('is-checked', 'add');
416-
}
417-
418-
updateIssuesMeta(
419-
$listMenu.data('update-url'),
420-
'',
421-
$listMenu.data('issue-id'),
422-
$(this).data('id'),
423-
$(this).data('is-checked')
424-
);
425-
$listMenu.data('action', 'update'); // Update to reload the page when we updated items
396+
$listMenu.find('.item:not(.no-select)').on('click', function (e) {
397+
e.preventDefault();
398+
if ($(this).hasClass('ban-change')) {
426399
return false;
427400
}
428401

402+
hasUpdateAction = $listMenu.data('action') === 'update'; // Update the var
429403
if ($(this).hasClass('checked')) {
430404
$(this).removeClass('checked');
431405
$(this).find('.octicon-check').addClass('invisible');
432-
if (hasLabelUpdateAction) {
433-
if (!($(this).data('id') in labels)) {
434-
labels[$(this).data('id')] = {
406+
if (hasUpdateAction) {
407+
if (!($(this).data('id') in items)) {
408+
items[$(this).data('id')] = {
435409
'update-url': $listMenu.data('update-url'),
436410
action: 'detach',
437411
'issue-id': $listMenu.data('issue-id'),
438412
};
439413
} else {
440-
delete labels[$(this).data('id')];
414+
delete items[$(this).data('id')];
441415
}
442416
}
443417
} else {
444418
$(this).addClass('checked');
445419
$(this).find('.octicon-check').removeClass('invisible');
446-
if (hasLabelUpdateAction) {
447-
if (!($(this).data('id') in labels)) {
448-
labels[$(this).data('id')] = {
420+
if (hasUpdateAction) {
421+
if (!($(this).data('id') in items)) {
422+
items[$(this).data('id')] = {
449423
'update-url': $listMenu.data('update-url'),
450424
action: 'attach',
451425
'issue-id': $listMenu.data('issue-id'),
452426
};
453427
} else {
454-
delete labels[$(this).data('id')];
428+
delete items[$(this).data('id')];
455429
}
456430
}
457431
}
458432

433+
// TODO: Which thing should be done for choosing review requests
434+
// to make choosed items be shown on time here?
435+
if (selector === 'select-reviewers-modify' || selector === 'select-assignees-modify') {
436+
return false;
437+
}
438+
459439
const listIds = [];
460440
$(this).parent().find('.item').each(function () {
461441
if ($(this).hasClass('checked')) {
@@ -473,23 +453,26 @@ function initCommentForm() {
473453
$($(this).parent().data('id')).val(listIds.join(','));
474454
return false;
475455
});
476-
$listMenu.find('.no-select.item').on('click', function () {
477-
if (hasLabelUpdateAction || selector === 'select-assignees-modify') {
456+
$listMenu.find('.no-select.item').on('click', function (e) {
457+
e.preventDefault();
458+
if (hasUpdateAction) {
478459
updateIssuesMeta(
479460
$listMenu.data('update-url'),
480461
'clear',
481462
$listMenu.data('issue-id'),
482463
'',
483-
''
484464
).then(reload);
485465
}
486466

487467
$(this).parent().find('.item').each(function () {
488468
$(this).removeClass('checked');
489469
$(this).find('.octicon').addClass('invisible');
490-
$(this).data('is-checked', 'remove');
491470
});
492471

472+
if (selector === 'select-reviewers-modify' || selector === 'select-assignees-modify') {
473+
return false;
474+
}
475+
493476
$list.find('.item').each(function () {
494477
$(this).addClass('hide');
495478
});
@@ -521,7 +504,6 @@ function initCommentForm() {
521504
'',
522505
$menu.data('issue-id'),
523506
$(this).data('id'),
524-
$(this).data('is-checked')
525507
).then(reload);
526508
}
527509
switch (input_id) {
@@ -552,7 +534,6 @@ function initCommentForm() {
552534
'',
553535
$menu.data('issue-id'),
554536
$(this).data('id'),
555-
$(this).data('is-checked')
556537
).then(reload);
557538
}
558539

@@ -672,10 +653,9 @@ function initIssueComments() {
672653
event.preventDefault();
673654
updateIssuesMeta(
674655
url,
675-
'',
656+
isChecked === 'true' ? 'attach' : 'detach',
676657
issueId,
677658
id,
678-
isChecked
679659
).then(reload);
680660
});
681661

0 commit comments

Comments
 (0)