From fe66b612b5234142304cd7c6c97a14017bca066c Mon Sep 17 00:00:00 2001 From: Jimmy Praet <jimmy.praet@telenet.be> Date: Sun, 27 Jun 2021 21:57:01 +0200 Subject: [PATCH] Add previous/next buttons to review comments (#16273) Co-authored-by: Norwin <noerw@users.noreply.github.com> Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: zeripath <art27@cantab.net> --- templates/repo/diff/conversation.tmpl | 8 ++++++++ web_src/js/index.js | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/templates/repo/diff/conversation.tmpl b/templates/repo/diff/conversation.tmpl index ea268c5c17..5ae44e600e 100644 --- a/templates/repo/diff/conversation.tmpl +++ b/templates/repo/diff/conversation.tmpl @@ -27,6 +27,14 @@ </ui> </div> <div class="df je ac fw mt-3"> + <div class="ui buttons mr-2"> + <button class="ui icon tiny basic button previous-conversation"> + {{svg "octicon-arrow-up"}} {{$.i18n.Tr "repo.issues.previous"}} + </button> + <button class="ui icon tiny basic button next-conversation"> + {{svg "octicon-arrow-down"}} {{$.i18n.Tr "repo.issues.next"}} + </button> + </div> {{if and $.CanMarkConversation $isNotPending}} <button class="ui icon tiny basic button resolve-conversation" data-origin="diff" data-action="{{if not $resolved}}Resolve{{else}}UnResolve{{end}}" data-comment-id="{{(index .comments 0).ID}}" data-update-url="{{$.RepoLink}}/issues/resolve_conversation"> {{if $resolved}} diff --git a/web_src/js/index.js b/web_src/js/index.js index 67548f5d9d..f1f41ce747 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -942,6 +942,28 @@ async function initRepository() { action: 'hide' }); + // Previous/Next code review conversation + $(document).on('click', '.previous-conversation', (e) => { + const $conversation = $(e.currentTarget).closest('.comment-code-cloud'); + const $conversations = $('.comment-code-cloud:not(.hide)'); + const index = $conversations.index($conversation); + if (index !== 0) { + const $previousConversation = $conversations.eq(index - 1); + const anchor = $previousConversation.find('.comment').first().attr('id'); + window.location.href = `#${anchor}`; + } + }); + $(document).on('click', '.next-conversation', (e) => { + const $conversation = $(e.currentTarget).closest('.comment-code-cloud'); + const $conversations = $('.comment-code-cloud:not(.hide)'); + const index = $conversations.index($conversation); + if (index !== $conversations.length - 1) { + const $nextConversation = $conversations.eq(index + 1); + const anchor = $nextConversation.find('.comment').first().attr('id'); + window.location.href = `#${anchor}`; + } + }); + // Quote reply $(document).on('click', '.quote-reply', function (event) { $(this).closest('.dropdown').find('.menu').toggle('visible');