Skip to content

Commit 355a90f

Browse files
committed
Refac user.Issues(): add func userRepoIDs
1 parent 19221f0 commit 355a90f

File tree

1 file changed

+45
-28
lines changed

1 file changed

+45
-28
lines changed

routers/user/home.go

+45-28
Original file line numberDiff line numberDiff line change
@@ -398,34 +398,10 @@ func Issues(ctx *context.Context) {
398398
isShowClosed := ctx.Query("state") == "closed"
399399

400400
// Get repository IDs where User/Org has access.
401-
// Again, the distinction between User and Org could perhaps be handled more elegantly.
402-
var err error
403-
var userRepoIDs []int64
404-
if ctxUser.IsOrganization() {
405-
env, err := ctxUser.AccessibleReposEnv(ctx.User.ID)
406-
if err != nil {
407-
ctx.ServerError("AccessibleReposEnv", err)
408-
return
409-
}
410-
userRepoIDs, err = env.RepoIDs(1, ctxUser.NumRepos)
411-
if err != nil {
412-
ctx.ServerError("env.RepoIDs", err)
413-
return
414-
}
415-
userRepoIDs, err = models.FilterOutRepoIdsWithoutUnitAccess(ctx.User, userRepoIDs, unitType)
416-
if err != nil {
417-
ctx.ServerError("FilterOutRepoIdsWithoutUnitAccess", err)
418-
return
419-
}
420-
} else {
421-
userRepoIDs, err = ctxUser.GetAccessRepoIDs(unitType)
422-
if err != nil {
423-
ctx.ServerError("ctxUser.GetAccessRepoIDs", err)
424-
return
425-
}
426-
}
427-
if len(userRepoIDs) == 0 {
428-
userRepoIDs = []int64{-1}
401+
userRepoIDs, errorTitle, err := userRepoIDs(ctxUser, ctx.User, unitType)
402+
if err != nil {
403+
ctx.ServerError(errorTitle, err)
404+
return
429405
}
430406

431407
// Build IssuesOptions, which contains filter information.
@@ -723,6 +699,47 @@ func repoIDs(reposQuery string) []int64 {
723699
return repoIDs
724700
}
725701

702+
func userRepoIDs(ctxUser, user *models.User, unitType models.UnitType) ([]int64, string, error) {
703+
var err error
704+
var errorTitle string
705+
var userRepoIDs []int64
706+
707+
if ctxUser.IsOrganization() {
708+
userRepoIDs, errorTitle, err = orgRepoIds(ctxUser, user, unitType)
709+
} else {
710+
userRepoIDs, err = ctxUser.GetAccessRepoIDs(unitType)
711+
errorTitle = "ctxUser.GetAccessRepoIDs"
712+
}
713+
714+
if err != nil {
715+
return nil, errorTitle, err
716+
}
717+
718+
if len(userRepoIDs) == 0 {
719+
userRepoIDs = []int64{-1}
720+
}
721+
722+
return userRepoIDs, "", nil
723+
}
724+
725+
func orgRepoIds(org, user *models.User, unitType models.UnitType) ([]int64, string, error) {
726+
var orgRepoIDs []int64
727+
var err error
728+
env, err := org.AccessibleReposEnv(user.ID)
729+
if err != nil {
730+
return nil, "AccessibleReposEnv", err
731+
}
732+
orgRepoIDs, err = env.RepoIDs(1, org.NumRepos)
733+
if err != nil {
734+
return nil, "env.RepoIDs", err
735+
}
736+
orgRepoIDs, err = models.FilterOutRepoIdsWithoutUnitAccess(user, orgRepoIDs, unitType)
737+
if err != nil {
738+
return nil, "FilterOutRepoIdsWithoutUnitAccess", err
739+
}
740+
return orgRepoIDs, "", nil
741+
}
742+
726743
// ShowSSHKeys output all the ssh keys of user by uid
727744
func ShowSSHKeys(ctx *context.Context, uid int64) {
728745
keys, err := models.ListPublicKeys(uid, models.ListOptions{})

0 commit comments

Comments
 (0)