@@ -557,8 +557,8 @@ func renderMilestones(ctx *context.Context) {
557557 ctx .Data ["ClosedMilestones" ] = closedMilestones
558558}
559559
560- // RetrieveRepoMilestonesAndAssignees find all the milestones and assignees of a repository
561- func RetrieveRepoMilestonesAndAssignees (ctx * context.Context , repo * repo_model.Repository ) {
560+ // RetrieveRepoMilestonesAndAssignees find all the milestones, assignees, and reviewers of a repository
561+ func RetrieveRepoMilestonesAssigneesAndReviewers (ctx * context.Context , repo * repo_model.Repository ) {
562562 var err error
563563 ctx .Data ["OpenMilestones" ], err = db .Find [issues_model.Milestone ](ctx , issues_model.FindMilestoneOptions {
564564 RepoID : repo .ID ,
@@ -585,6 +585,8 @@ func RetrieveRepoMilestonesAndAssignees(ctx *context.Context, repo *repo_model.R
585585 ctx .Data ["Assignees" ] = shared_user .MakeSelfOnTop (ctx .Doer , assigneeUsers )
586586
587587 handleTeamMentions (ctx )
588+
589+ retrieveReviewers (ctx )
588590}
589591
590592func retrieveProjects (ctx * context.Context , repo * repo_model.Repository ) {
@@ -862,7 +864,7 @@ func RetrieveRepoMetas(ctx *context.Context, repo *repo_model.Repository, isPull
862864 labels = append (labels , orgLabels ... )
863865 }
864866
865- RetrieveRepoMilestonesAndAssignees (ctx , repo )
867+ RetrieveRepoMilestonesAssigneesAndReviewers (ctx , repo )
866868 if ctx .Written () {
867869 return nil
868870 }
@@ -883,6 +885,46 @@ func RetrieveRepoMetas(ctx *context.Context, repo *repo_model.Repository, isPull
883885 return labels
884886}
885887
888+ func retrieveReviewers (ctx * context.Context ) {
889+ // Get reviewer info for pr
890+ var (
891+ reviewers []* user_model.User
892+ teamReviewers []* organization.Team
893+ reviewersResult []* repoReviewerSelection
894+ )
895+ reviewers , err := repo_model .GetReviewers (ctx , ctx .Repo .Repository , ctx .Doer .ID , ctx .Doer .ID )
896+ if err != nil {
897+ ctx .ServerError ("GetReviewers" , err )
898+ return
899+ }
900+
901+ teamReviewers , err = repo_service .GetReviewerTeams (ctx , ctx .Repo .Repository )
902+ if err != nil {
903+ ctx .ServerError ("GetReviewerTeams" , err )
904+ return
905+ }
906+
907+ for _ , user := range reviewers {
908+ reviewersResult = append (reviewersResult , & repoReviewerSelection {
909+ IsTeam : false ,
910+ CanChange : true ,
911+ User : user ,
912+ ItemID : user .ID ,
913+ })
914+ }
915+
916+ // negative reviewIDs represent team requests
917+ for _ , team := range teamReviewers {
918+ reviewersResult = append (reviewersResult , & repoReviewerSelection {
919+ IsTeam : true ,
920+ CanChange : true ,
921+ Team : team ,
922+ ItemID : - team .ID ,
923+ })
924+ }
925+ ctx .Data ["Reviewers" ] = reviewersResult
926+ }
927+
886928// Tries to load and set an issue template. The first return value indicates if a template was loaded.
887929func setTemplateIfExists (ctx * context.Context , ctxDataKey string , possibleFiles []string ) (bool , map [string ]error ) {
888930 commit , err := ctx .Repo .GitRepo .GetBranchCommit (ctx .Repo .Repository .DefaultBranch )
@@ -1573,7 +1615,7 @@ func ViewIssue(ctx *context.Context) {
15731615
15741616 // Check milestone and assignee.
15751617 if ctx .Repo .CanWriteIssuesOrPulls (issue .IsPull ) {
1576- RetrieveRepoMilestonesAndAssignees (ctx , repo )
1618+ RetrieveRepoMilestonesAssigneesAndReviewers (ctx , repo )
15771619 retrieveProjects (ctx , repo )
15781620
15791621 if ctx .Written () {
0 commit comments