Skip to content

Commit

Permalink
Improve reviewing PR UX (#19612)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gusted authored May 7, 2022
1 parent 5a9c505 commit 0eac09e
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 3 deletions.
18 changes: 17 additions & 1 deletion routers/web/repo/pull.go
Original file line number Diff line number Diff line change
Expand Up @@ -752,11 +752,27 @@ func ViewPullFiles(ctx *context.Context) {
if ctx.Written() {
return
}
ctx.Data["CurrentReview"], err = models.GetCurrentReview(ctx.Doer, issue)

currentReview, err := models.GetCurrentReview(ctx.Doer, issue)
if err != nil && !models.IsErrReviewNotExist(err) {
ctx.ServerError("GetCurrentReview", err)
return
}
numPendingCodeComments := int64(0)
if currentReview != nil {
numPendingCodeComments, err = models.CountComments(&models.FindCommentsOptions{
Type: models.CommentTypeCode,
ReviewID: currentReview.ID,
IssueID: issue.ID,
})
if err != nil {
ctx.ServerError("CountComments", err)
return
}
}
ctx.Data["CurrentReview"] = currentReview
ctx.Data["PendingCodeCommentNumber"] = numPendingCodeComments

getBranchData(ctx, issue)
ctx.Data["IsIssuePoster"] = ctx.IsSigned && issue.IsPoster(ctx.Doer.ID)
ctx.Data["HasIssuesOrPullsWritePermission"] = ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull)
Expand Down
2 changes: 1 addition & 1 deletion templates/repo/diff/comments.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<div class="comment-header-right actions df ac">
{{if and .Review}}
{{if eq .Review.Type 0}}
<div class="ui label basic small yellow">
<div class="ui label basic small yellow pending-label">
{{$.root.i18n.Tr "repo.issues.review.pending"}}
</div>
{{else}}
Expand Down
1 change: 1 addition & 0 deletions templates/repo/diff/new_review.tmpl
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<div class="ui top right pointing dropdown custom" id="review-box">
<div class="ui tiny green button btn-review">
{{.i18n.Tr "repo.diff.review"}}
<span class="ui small label review-comments-counter" data-pending-comment-number="{{.PendingCodeCommentNumber}}">{{.PendingCodeCommentNumber}}</span>
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
</div>
<div class="menu review-box">
Expand Down
17 changes: 16 additions & 1 deletion web_src/js/features/repo-diff.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,23 @@ import {validateTextareaNonEmpty} from './comp/EasyMDE.js';
const {csrfToken} = window.config;

export function initRepoDiffReviewButton() {
const $reviewBox = $('#review-box');
const $counter = $reviewBox.find('.review-comments-counter');

$(document).on('click', 'button[name="is_review"]', (e) => {
$(e.target).closest('form').append('<input type="hidden" name="is_review" value="true">');
const $form = $(e.target).closest('form');
$form.append('<input type="hidden" name="is_review" value="true">');

// Watch for the form's submit event.
$form.on('submit', () => {
const num = parseInt($counter.attr('data-pending-comment-number')) + 1 || 1;
$counter.attr('data-pending-comment-number', num);
$counter.text(num);
// Force the browser to reflow the DOM. This is to ensure that the browser replay the animation
$reviewBox.removeClass('pulse');
$reviewBox.width();
$reviewBox.addClass('pulse');
});
});
}

Expand Down
10 changes: 10 additions & 0 deletions web_src/js/features/repo-issue.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,16 @@ export function initRepoIssueCommentDelete() {
_csrf: csrfToken,
}).done(() => {
const $conversationHolder = $this.closest('.conversation-holder');

// Check if this was a pending comment.
if ($conversationHolder.find('.pending-label').length) {
const $counter = $('#review-box .review-comments-counter');
let num = parseInt($counter.attr('data-pending-comment-number')) - 1 || 0;
num = Math.max(num, 0);
$counter.attr('data-pending-comment-number', num);
$counter.text(num);
}

$(`#${$this.data('comment-id')}`).remove();
if ($conversationHolder.length && !$conversationHolder.find('.comment').length) {
const path = $conversationHolder.data('path');
Expand Down
13 changes: 13 additions & 0 deletions web_src/less/_review.less
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,19 @@ a.blob-excerpt:hover {
border: none !important;
}

#review-box .review-comments-counter {
background-color: var(--color-primary-light-4);
color: #fff;
}

#review-box:hover .review-comments-counter {
background-color: var(--color-primary-light-5);
}

#review-box .review-comments-counter[data-pending-comment-number="0"] {
display: none;
}

.pull.files.diff [id] {
scroll-margin-top: 99px;

Expand Down
16 changes: 16 additions & 0 deletions web_src/less/animations.less
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,19 @@
opacity: 0;
}
}

@keyframes pulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.8);
}
100% {
transform: scale(1);
}
}

.pulse {
animation: pulse 2s linear;
}

0 comments on commit 0eac09e

Please sign in to comment.