Skip to content

Commit cd1b548

Browse files
authored
Refactor pagination (go-gitea#33037)
I am sure the simple approach should work, let's try it in 1.24 Follow go-gitea#29834 and go-gitea#29841
1 parent 1dbf0d7 commit cd1b548

File tree

25 files changed

+33
-151
lines changed

25 files changed

+33
-151
lines changed

models/user/search.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ type SearchUserOptions struct {
3939
IsTwoFactorEnabled optional.Option[bool]
4040
IsProhibitLogin optional.Option[bool]
4141
IncludeReserved bool
42-
43-
ExtraParamStrings map[string]string
4442
}
4543

4644
func (opts *SearchUserOptions) toSearchQueryBase(ctx context.Context) *xorm.Session {

routers/web/admin/emails.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func Emails(ctx *context.Context) {
9494
ctx.Data["Emails"] = emails
9595

9696
pager := context.NewPagination(int(count), opts.PageSize, opts.Page, 5)
97-
pager.SetDefaultParams(ctx)
97+
pager.AddParamFromRequest(ctx.Req)
9898
ctx.Data["Page"] = pager
9999

100100
ctx.HTML(http.StatusOK, tplEmails)

routers/web/admin/packages.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ func Packages(ctx *context.Context) {
7777
ctx.Data["TotalUnreferencedBlobSize"] = totalUnreferencedBlobSize
7878

7979
pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5)
80-
pager.AddParamString("q", query)
81-
pager.AddParamString("type", packageType)
82-
pager.AddParamString("sort", sort)
80+
pager.AddParamFromRequest(ctx.Req)
8381
ctx.Data["Page"] = pager
8482

8583
ctx.HTML(http.StatusOK, tplPackagesList)

routers/web/admin/repos.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package admin
55

66
import (
7-
"fmt"
87
"net/http"
98
"net/url"
109
"strings"
@@ -84,8 +83,7 @@ func UnadoptedRepos(ctx *context.Context) {
8483

8584
if !doSearch {
8685
pager := context.NewPagination(0, opts.PageSize, opts.Page, 5)
87-
pager.SetDefaultParams(ctx)
88-
pager.AddParamString("search", fmt.Sprint(doSearch))
86+
pager.AddParamFromRequest(ctx.Req)
8987
ctx.Data["Page"] = pager
9088
ctx.HTML(http.StatusOK, tplUnadoptedRepos)
9189
return
@@ -99,8 +97,7 @@ func UnadoptedRepos(ctx *context.Context) {
9997
}
10098
ctx.Data["Dirs"] = repoNames
10199
pager := context.NewPagination(count, opts.PageSize, opts.Page, 5)
102-
pager.SetDefaultParams(ctx)
103-
pager.AddParamString("search", fmt.Sprint(doSearch))
100+
pager.AddParamFromRequest(ctx.Req)
104101
ctx.Data["Page"] = pager
105102
ctx.HTML(http.StatusOK, tplUnadoptedRepos)
106103
}

routers/web/admin/users.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,12 @@ func Users(ctx *context.Context) {
4747
ctx.Data["Title"] = ctx.Tr("admin.users")
4848
ctx.Data["PageIsAdminUsers"] = true
4949

50-
extraParamStrings := map[string]string{}
5150
statusFilterKeys := []string{"is_active", "is_admin", "is_restricted", "is_2fa_enabled", "is_prohibit_login"}
5251
statusFilterMap := map[string]string{}
5352
for _, filterKey := range statusFilterKeys {
5453
paramKey := "status_filter[" + filterKey + "]"
5554
paramVal := ctx.FormString(paramKey)
5655
statusFilterMap[filterKey] = paramVal
57-
if paramVal != "" {
58-
extraParamStrings[paramKey] = paramVal
59-
}
6056
}
6157

6258
sortType := ctx.FormString("sort")
@@ -82,7 +78,6 @@ func Users(ctx *context.Context) {
8278
IsTwoFactorEnabled: util.OptionalBoolParse(statusFilterMap["is_2fa_enabled"]),
8379
IsProhibitLogin: util.OptionalBoolParse(statusFilterMap["is_prohibit_login"]),
8480
IncludeReserved: true, // administrator needs to list all accounts include reserved, bot, remote ones
85-
ExtraParamStrings: extraParamStrings,
8681
}, tplUsers)
8782
}
8883

routers/web/explore/code.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,7 @@ func Code(ctx *context.Context) {
137137
ctx.Data["SearchResultLanguages"] = searchResultLanguages
138138

139139
pager := context.NewPagination(total, setting.UI.RepoSearchPagingNum, page, 5)
140-
pager.SetDefaultParams(ctx)
141-
pager.AddParamString("l", language)
140+
pager.AddParamFromRequest(ctx.Req)
142141
ctx.Data["Page"] = pager
143142

144143
ctx.HTML(http.StatusOK, tplExploreCode)

routers/web/explore/repo.go

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package explore
55

66
import (
7-
"fmt"
87
"net/http"
98

109
"code.gitea.io/gitea/models/db"
@@ -139,25 +138,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
139138
ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
140139

141140
pager := context.NewPagination(int(count), opts.PageSize, page, 5)
142-
pager.SetDefaultParams(ctx)
143-
pager.AddParamString("topic", fmt.Sprint(topicOnly))
144-
pager.AddParamString("language", language)
145-
pager.AddParamString(relevantReposOnlyParam, fmt.Sprint(opts.OnlyShowRelevant))
146-
if archived.Has() {
147-
pager.AddParamString("archived", fmt.Sprint(archived.Value()))
148-
}
149-
if fork.Has() {
150-
pager.AddParamString("fork", fmt.Sprint(fork.Value()))
151-
}
152-
if mirror.Has() {
153-
pager.AddParamString("mirror", fmt.Sprint(mirror.Value()))
154-
}
155-
if template.Has() {
156-
pager.AddParamString("template", fmt.Sprint(template.Value()))
157-
}
158-
if private.Has() {
159-
pager.AddParamString("private", fmt.Sprint(private.Value()))
160-
}
141+
pager.AddParamFromRequest(ctx.Req)
161142
ctx.Data["Page"] = pager
162143

163144
ctx.HTML(http.StatusOK, opts.TplName)

routers/web/explore/user.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,7 @@ func RenderUserSearch(ctx *context.Context, opts *user_model.SearchUserOptions,
120120
ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
121121

122122
pager := context.NewPagination(int(count), opts.PageSize, opts.Page, 5)
123-
pager.SetDefaultParams(ctx)
124-
for paramKey, paramVal := range opts.ExtraParamStrings {
125-
pager.AddParamString(paramKey, paramVal)
126-
}
123+
pager.AddParamFromRequest(ctx.Req)
127124
ctx.Data["Page"] = pager
128125

129126
ctx.HTML(http.StatusOK, tplName)

routers/web/org/home.go

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package org
55

66
import (
7-
"fmt"
87
"net/http"
98
"path"
109
"strings"
@@ -146,23 +145,7 @@ func home(ctx *context.Context, viewRepositories bool) {
146145
ctx.Data["Total"] = count
147146

148147
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
149-
pager.SetDefaultParams(ctx)
150-
pager.AddParamString("language", language)
151-
if archived.Has() {
152-
pager.AddParamString("archived", fmt.Sprint(archived.Value()))
153-
}
154-
if fork.Has() {
155-
pager.AddParamString("fork", fmt.Sprint(fork.Value()))
156-
}
157-
if mirror.Has() {
158-
pager.AddParamString("mirror", fmt.Sprint(mirror.Value()))
159-
}
160-
if template.Has() {
161-
pager.AddParamString("template", fmt.Sprint(template.Value()))
162-
}
163-
if private.Has() {
164-
pager.AddParamString("private", fmt.Sprint(private.Value()))
165-
}
148+
pager.AddParamFromRequest(ctx.Req)
166149
ctx.Data["Page"] = pager
167150

168151
ctx.HTML(http.StatusOK, tplOrgHome)

routers/web/org/projects.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func Projects(ctx *context.Context) {
120120
}
121121

122122
pager := context.NewPagination(int(total), setting.UI.IssuePagingNum, page, numPages)
123-
pager.AddParamString("state", fmt.Sprint(ctx.Data["State"]))
123+
pager.AddParamFromRequest(ctx.Req)
124124
ctx.Data["Page"] = pager
125125

126126
ctx.Data["CanWriteProjects"] = canWriteProjects(ctx)

0 commit comments

Comments
 (0)