diff --git a/models/issues/review.go b/models/issues/review.go index a051440290e..58ad532da78 100644 --- a/models/issues/review.go +++ b/models/issues/review.go @@ -1065,19 +1065,23 @@ func (r *Review) GetCodeCommentsCount(ctx context.Context) int { return int(count) } -// HTMLURL formats a URL-string to the related review issue-comment +// HashTag returns unique hash tag for review. +func (r *Review) HashTag() string { + return fmt.Sprintf("pullrequestreview-%d", r.ID) +} + +// HTMLURL formats a URL-string to the review on the pull request page func (r *Review) HTMLURL(ctx context.Context) string { - opts := FindCommentsOptions{ - Type: CommentTypeReview, - IssueID: r.IssueID, - ReviewID: r.ID, + if r.Type != ReviewTypeApprove && r.Type != ReviewTypeComment && r.Type != ReviewTypeReject { + return "" // only submitted reviews get a timeline block carrying the anchor } - comment := new(Comment) - has, err := db.GetEngine(ctx).Where(opts.ToConds()).Get(comment) - if err != nil || !has { + if err := r.LoadIssue(ctx); err != nil { return "" } - return comment.HTMLURL(ctx) + if err := r.Issue.LoadRepo(ctx); err != nil { + return "" + } + return r.Issue.HTMLURL(ctx) + "#" + r.HashTag() } // RemapExternalUser ExternalUserRemappable interface diff --git a/models/issues/review_test.go b/models/issues/review_test.go index 6010f74c415..653081c8ad0 100644 --- a/models/issues/review_test.go +++ b/models/issues/review_test.go @@ -12,6 +12,7 @@ import ( repo_model "gitea.dev/models/repo" "gitea.dev/models/unittest" user_model "gitea.dev/models/user" + "gitea.dev/modules/setting" "github.com/stretchr/testify/assert" ) @@ -28,6 +29,15 @@ func TestGetReviewByID(t *testing.T) { assert.True(t, issues_model.IsErrReviewNotExist(err), "IsErrReviewNotExist") } +func TestReview_HTMLURL(t *testing.T) { + assert.NoError(t, unittest.PrepareTestDatabase()) + review := unittest.AssertExistsAndLoadBean(t, &issues_model.Review{ID: 1}) + assert.Equal(t, setting.AppURL+"user2/repo1/pulls/2#pullrequestreview-1", review.HTMLURL(t.Context())) + + pendingReview := unittest.AssertExistsAndLoadBean(t, &issues_model.Review{ID: 4}) + assert.Empty(t, pendingReview.HTMLURL(t.Context())) +} + func TestReview_LoadAttributes(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) review := unittest.AssertExistsAndLoadBean(t, &issues_model.Review{ID: 1}) diff --git a/templates/repo/issue/sidebar/stopwatch_timetracker.tmpl b/templates/repo/issue/sidebar/stopwatch_timetracker.tmpl index b23024e62bc..853820d5490 100644 --- a/templates/repo/issue/sidebar/stopwatch_timetracker.tmpl +++ b/templates/repo/issue/sidebar/stopwatch_timetracker.tmpl @@ -72,7 +72,7 @@ {{range $user, $trackedtime := .WorkingUsers}}