summaryrefslogtreecommitdiffstats
path: root/routers/api/v1
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2021-11-22 21:51:45 +0800
committerGitHub <noreply@github.com>2021-11-22 21:51:45 +0800
commitc2ab19888f92fbdec4276a16d224e8de80d1d1dd (patch)
tree1fdbf05d1b6d2a99e88e8219133a252fce6562d5 /routers/api/v1
parented23a6c39704c329ec4940bfec16739a0d3d3e91 (diff)
downloadgitea-c2ab19888f92fbdec4276a16d224e8de80d1d1dd.tar.gz
gitea-c2ab19888f92fbdec4276a16d224e8de80d1d1dd.zip
Support pagination of organizations on user settings pages (#16083)
* Add pagination for user setting orgs * Use FindOrgs instead of GetOrgsByUserID * Remove unnecessary functions and fix test * remove unnecessary code
Diffstat (limited to 'routers/api/v1')
-rw-r--r--routers/api/v1/org/org.go21
1 files changed, 13 insertions, 8 deletions
diff --git a/routers/api/v1/org/org.go b/routers/api/v1/org/org.go
index bbf127f891..f539662d62 100644
--- a/routers/api/v1/org/org.go
+++ b/routers/api/v1/org/org.go
@@ -12,7 +12,6 @@ import (
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/convert"
api "code.gitea.io/gitea/modules/structs"
- "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/api/v1/user"
"code.gitea.io/gitea/routers/api/v1/utils"
@@ -20,25 +19,31 @@ import (
)
func listUserOrgs(ctx *context.APIContext, u *models.User) {
-
listOptions := utils.GetListOptions(ctx)
showPrivate := ctx.IsSigned && (ctx.User.IsAdmin || ctx.User.ID == u.ID)
- orgs, err := models.GetOrgsByUserID(u.ID, showPrivate)
+ var opts = models.FindOrgOptions{
+ ListOptions: listOptions,
+ UserID: u.ID,
+ IncludePrivate: showPrivate,
+ }
+ orgs, err := models.FindOrgs(opts)
if err != nil {
- ctx.Error(http.StatusInternalServerError, "GetOrgsByUserID", err)
+ ctx.Error(http.StatusInternalServerError, "FindOrgs", err)
+ return
+ }
+ maxResults, err := models.CountOrgs(opts)
+ if err != nil {
+ ctx.Error(http.StatusInternalServerError, "CountOrgs", err)
return
}
-
- maxResults := len(orgs)
- orgs, _ = util.PaginateSlice(orgs, listOptions.Page, listOptions.PageSize).([]*models.Organization)
apiOrgs := make([]*api.Organization, len(orgs))
for i := range orgs {
apiOrgs[i] = convert.ToOrganization(orgs[i])
}
- ctx.SetLinkHeader(maxResults, listOptions.PageSize)
+ ctx.SetLinkHeader(int(maxResults), listOptions.PageSize)
ctx.SetTotalCountHeader(int64(maxResults))
ctx.JSON(http.StatusOK, &apiOrgs)
}