Skip to content

Commit 84c50cd

Browse files
wxiaoguangsilverwind
authored andcommitted
Refactor AddParam to AddParamIfExist (go-gitea#29834)
When read the code: `pager.AddParam(ctx, "search", "search")`, the question always comes: What is it doing? Where is the value from? Why "search" / "search" ? Now it is clear: `pager.AddParamIfExist("search", ctx.Data["search"])`
1 parent bd660fc commit 84c50cd

File tree

17 files changed

+53
-54
lines changed

17 files changed

+53
-54
lines changed

routers/web/admin/repos.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func UnadoptedRepos(ctx *context.Context) {
8484
if !doSearch {
8585
pager := context.NewPagination(0, opts.PageSize, opts.Page, 5)
8686
pager.SetDefaultParams(ctx)
87-
pager.AddParam(ctx, "search", "search")
87+
pager.AddParamIfExist("search", ctx.Data["search"])
8888
ctx.Data["Page"] = pager
8989
ctx.HTML(http.StatusOK, tplUnadoptedRepos)
9090
return
@@ -98,7 +98,7 @@ func UnadoptedRepos(ctx *context.Context) {
9898
ctx.Data["Dirs"] = repoNames
9999
pager := context.NewPagination(count, opts.PageSize, opts.Page, 5)
100100
pager.SetDefaultParams(ctx)
101-
pager.AddParam(ctx, "search", "search")
101+
pager.AddParamIfExist("search", ctx.Data["search"])
102102
ctx.Data["Page"] = pager
103103
ctx.HTML(http.StatusOK, tplUnadoptedRepos)
104104
}

routers/web/explore/code.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ func Code(ctx *context.Context) {
127127

128128
pager := context.NewPagination(total, setting.UI.RepoSearchPagingNum, page, 5)
129129
pager.SetDefaultParams(ctx)
130-
pager.AddParam(ctx, "l", "Language")
130+
pager.AddParamIfExist("l", ctx.Data["Language"])
131131
ctx.Data["Page"] = pager
132132

133133
ctx.HTML(http.StatusOK, tplExploreCode)

routers/web/explore/repo.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
169169

170170
pager := context.NewPagination(int(count), opts.PageSize, page, 5)
171171
pager.SetDefaultParams(ctx)
172-
pager.AddParam(ctx, "topic", "TopicOnly")
173-
pager.AddParam(ctx, "language", "Language")
172+
pager.AddParamIfExist("topic", ctx.Data["TopicOnly"])
173+
pager.AddParamIfExist("language", ctx.Data["Language"])
174174
pager.AddParamString(relevantReposOnlyParam, fmt.Sprint(opts.OnlyShowRelevant))
175175
ctx.Data["Page"] = pager
176176

routers/web/org/home.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ func Home(ctx *context.Context) {
154154

155155
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
156156
pager.SetDefaultParams(ctx)
157-
pager.AddParam(ctx, "language", "Language")
157+
pager.AddParamIfExist("language", ctx.Data["Language"])
158158
ctx.Data["Page"] = pager
159159

160160
ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0

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.AddParam(ctx, "state", "State")
123+
pager.AddParamIfExist("state", ctx.Data["State"])
124124
ctx.Data["Page"] = pager
125125

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

routers/web/repo/commit.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ func Graph(ctx *context.Context) {
163163
ctx.Data["CommitCount"] = commitsCount
164164

165165
paginator := context.NewPagination(int(graphCommitsCount), setting.UI.GraphMaxCommitNum, page, 5)
166-
paginator.AddParam(ctx, "mode", "Mode")
167-
paginator.AddParam(ctx, "hide-pr-refs", "HidePRRefs")
166+
paginator.AddParamIfExist("mode", ctx.Data["Mode"])
167+
paginator.AddParamIfExist("hide-pr-refs", ctx.Data["HidePRRefs"])
168168
for _, branch := range branches {
169169
paginator.AddParamString("branch", branch)
170170
}

routers/web/repo/issue.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -472,16 +472,16 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
472472
}
473473
ctx.Data["ShowArchivedLabels"] = archived
474474

475-
pager.AddParam(ctx, "q", "Keyword")
476-
pager.AddParam(ctx, "type", "ViewType")
477-
pager.AddParam(ctx, "sort", "SortType")
478-
pager.AddParam(ctx, "state", "State")
479-
pager.AddParam(ctx, "labels", "SelectLabels")
480-
pager.AddParam(ctx, "milestone", "MilestoneID")
481-
pager.AddParam(ctx, "project", "ProjectID")
482-
pager.AddParam(ctx, "assignee", "AssigneeID")
483-
pager.AddParam(ctx, "poster", "PosterID")
484-
pager.AddParam(ctx, "archived", "ShowArchivedLabels")
475+
pager.AddParamIfExist("q", ctx.Data["Keyword"])
476+
pager.AddParamIfExist("type", ctx.Data["ViewType"])
477+
pager.AddParamIfExist("sort", ctx.Data["SortType"])
478+
pager.AddParamIfExist("state", ctx.Data["State"])
479+
pager.AddParamIfExist("labels", ctx.Data["SelectLabels"])
480+
pager.AddParamIfExist("milestone", ctx.Data["MilestoneID"])
481+
pager.AddParamIfExist("project", ctx.Data["ProjectID"])
482+
pager.AddParamIfExist("assignee", ctx.Data["AssigneeID"])
483+
pager.AddParamIfExist("poster", ctx.Data["PosterID"])
484+
pager.AddParamIfExist("archived", ctx.Data["ShowArchivedLabels"])
485485

486486
ctx.Data["Page"] = pager
487487
}

routers/web/repo/milestone.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ func Milestones(ctx *context.Context) {
106106
ctx.Data["IsShowClosed"] = isShowClosed
107107

108108
pager := context.NewPagination(int(total), setting.UI.IssuePagingNum, page, 5)
109-
pager.AddParam(ctx, "state", "State")
110-
pager.AddParam(ctx, "q", "Keyword")
109+
pager.AddParamIfExist("state", ctx.Data["State"])
110+
pager.AddParamIfExist("q", ctx.Data["Keyword"])
111111
ctx.Data["Page"] = pager
112112

113113
ctx.HTML(http.StatusOK, tplMilestone)

routers/web/repo/packages.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ func Packages(ctx *context.Context) {
7070
ctx.Data["RepositoryAccessMap"] = map[int64]bool{ctx.Repo.Repository.ID: true} // There is only the current repository
7171

7272
pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5)
73-
pager.AddParam(ctx, "q", "Query")
74-
pager.AddParam(ctx, "type", "PackageType")
73+
pager.AddParamIfExist("q", ctx.Data["Query"])
74+
pager.AddParamIfExist("type", ctx.Data["PackageType"])
7575
ctx.Data["Page"] = pager
7676

7777
ctx.HTML(http.StatusOK, tplPackagesList)

routers/web/repo/projects.go

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

120120
pager := context.NewPagination(total, setting.UI.IssuePagingNum, page, numPages)
121-
pager.AddParam(ctx, "state", "State")
121+
pager.AddParamIfExist("state", ctx.Data["State"])
122122
ctx.Data["Page"] = pager
123123

124124
ctx.Data["CanWriteProjects"] = ctx.Repo.Permission.CanWrite(unit.TypeProjects)

routers/web/repo/search.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func Search(ctx *context.Context) {
5959

6060
pager := context.NewPagination(total, setting.UI.RepoSearchPagingNum, page, 5)
6161
pager.SetDefaultParams(ctx)
62-
pager.AddParam(ctx, "l", "Language")
62+
pager.AddParamIfExist("l", ctx.Data["Language"])
6363
ctx.Data["Page"] = pager
6464

6565
ctx.HTML(http.StatusOK, tplSearch)

routers/web/user/code.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func CodeSearch(ctx *context.Context) {
112112

113113
pager := context.NewPagination(total, setting.UI.RepoSearchPagingNum, page, 5)
114114
pager.SetDefaultParams(ctx)
115-
pager.AddParam(ctx, "l", "Language")
115+
pager.AddParamIfExist("l", ctx.Data["Language"])
116116
ctx.Data["Page"] = pager
117117

118118
ctx.HTML(http.StatusOK, tplUserCode)

routers/web/user/home.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ func Dashboard(ctx *context.Context) {
133133
ctx.Data["Feeds"] = feeds
134134

135135
pager := context.NewPagination(int(count), setting.UI.FeedPagingNum, page, 5)
136-
pager.AddParam(ctx, "date", "Date")
136+
pager.AddParamIfExist("date", ctx.Data["Date"])
137137
ctx.Data["Page"] = pager
138138

139139
ctx.HTML(http.StatusOK, tplDashboard)
@@ -329,10 +329,10 @@ func Milestones(ctx *context.Context) {
329329
ctx.Data["IsShowClosed"] = isShowClosed
330330

331331
pager := context.NewPagination(pagerCount, setting.UI.IssuePagingNum, page, 5)
332-
pager.AddParam(ctx, "q", "Keyword")
333-
pager.AddParam(ctx, "repos", "RepoIDs")
334-
pager.AddParam(ctx, "sort", "SortType")
335-
pager.AddParam(ctx, "state", "State")
332+
pager.AddParamIfExist("q", ctx.Data["Keyword"])
333+
pager.AddParamIfExist("repos", ctx.Data["RepoIDs"])
334+
pager.AddParamIfExist("sort", ctx.Data["SortType"])
335+
pager.AddParamIfExist("state", ctx.Data["State"])
336336
ctx.Data["Page"] = pager
337337

338338
ctx.HTML(http.StatusOK, tplMilestones)
@@ -632,13 +632,13 @@ func buildIssueOverview(ctx *context.Context, unitType unit.Type) {
632632
}
633633

634634
pager := context.NewPagination(shownIssues, setting.UI.IssuePagingNum, page, 5)
635-
pager.AddParam(ctx, "q", "Keyword")
636-
pager.AddParam(ctx, "type", "ViewType")
637-
pager.AddParam(ctx, "sort", "SortType")
638-
pager.AddParam(ctx, "state", "State")
639-
pager.AddParam(ctx, "labels", "SelectLabels")
640-
pager.AddParam(ctx, "milestone", "MilestoneID")
641-
pager.AddParam(ctx, "assignee", "AssigneeID")
635+
pager.AddParamIfExist("q", ctx.Data["Keyword"])
636+
pager.AddParamIfExist("type", ctx.Data["ViewType"])
637+
pager.AddParamIfExist("sort", ctx.Data["SortType"])
638+
pager.AddParamIfExist("state", ctx.Data["State"])
639+
pager.AddParamIfExist("labels", ctx.Data["SelectLabels"])
640+
pager.AddParamIfExist("milestone", ctx.Data["MilestoneID"])
641+
pager.AddParamIfExist("assignee", ctx.Data["AssigneeID"])
642642
ctx.Data["Page"] = pager
643643

644644
ctx.HTML(http.StatusOK, tplIssues)

routers/web/user/notification.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,8 @@ func NotificationSubscriptions(ctx *context.Context) {
344344
ctx.Redirect(fmt.Sprintf("/notifications/subscriptions?page=%d", pager.Paginater.Current()))
345345
return
346346
}
347-
pager.AddParam(ctx, "sort", "SortType")
348-
pager.AddParam(ctx, "state", "State")
347+
pager.AddParamIfExist("sort", ctx.Data["SortType"])
348+
pager.AddParamIfExist("state", ctx.Data["State"])
349349
ctx.Data["Page"] = pager
350350

351351
ctx.HTML(http.StatusOK, tplNotificationSubscriptions)

routers/web/user/package.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ func ListPackages(ctx *context.Context) {
125125
}
126126

127127
pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5)
128-
pager.AddParam(ctx, "q", "Query")
129-
pager.AddParam(ctx, "type", "PackageType")
128+
pager.AddParamIfExist("q", ctx.Data["Query"])
129+
pager.AddParamIfExist("type", ctx.Data["PackageType"])
130130
ctx.Data["Page"] = pager
131131

132132
ctx.HTML(http.StatusOK, tplPackagesList)

routers/web/user/profile.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -324,12 +324,12 @@ func prepareUserProfileTabData(ctx *context.Context, showPrivate bool, profileDb
324324

325325
pager := context.NewPagination(total, pagingNum, page, 5)
326326
pager.SetDefaultParams(ctx)
327-
pager.AddParam(ctx, "tab", "TabName")
327+
pager.AddParamIfExist("tab", ctx.Data["TabName"])
328328
if tab != "followers" && tab != "following" && tab != "activity" && tab != "projects" {
329-
pager.AddParam(ctx, "language", "Language")
329+
pager.AddParamIfExist("language", ctx.Data["Language"])
330330
}
331331
if tab == "activity" {
332-
pager.AddParam(ctx, "date", "Date")
332+
pager.AddParamIfExist("date", ctx.Data["Date"])
333333
}
334334
ctx.Data["Page"] = pager
335335
}

services/context/pagination.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,13 @@ func NewPagination(total, pagingNum, current, numPages int) *Pagination {
2626
return p
2727
}
2828

29-
// AddParam adds a value from context identified by ctxKey as link param under a given paramKey
30-
func (p *Pagination) AddParam(ctx *Context, paramKey, ctxKey string) {
31-
_, exists := ctx.Data[ctxKey]
32-
if !exists {
29+
// AddParamIfExist adds a value to the query parameters if the value is not nil
30+
func (p *Pagination) AddParamIfExist(key string, val any) {
31+
if val == nil {
3332
return
3433
}
35-
paramData := fmt.Sprintf("%v", ctx.Data[ctxKey]) // cast any to string
36-
urlParam := fmt.Sprintf("%s=%v", url.QueryEscape(paramKey), url.QueryEscape(paramData))
34+
paramData := fmt.Sprint(val)
35+
urlParam := fmt.Sprintf("%s=%v", url.QueryEscape(key), url.QueryEscape(paramData))
3736
p.urlParams = append(p.urlParams, urlParam)
3837
}
3938

@@ -50,8 +49,8 @@ func (p *Pagination) GetParams() template.URL {
5049

5150
// SetDefaultParams sets common pagination params that are often used
5251
func (p *Pagination) SetDefaultParams(ctx *Context) {
53-
p.AddParam(ctx, "sort", "SortType")
54-
p.AddParam(ctx, "q", "Keyword")
52+
p.AddParamIfExist("sort", ctx.Data["SortType"])
53+
p.AddParamIfExist("q", ctx.Data["Keyword"])
5554
// do not add any more uncommon params here!
56-
p.AddParam(ctx, "fuzzy", "IsFuzzy")
55+
p.AddParamIfExist("fuzzy", ctx.Data["IsFuzzy"])
5756
}

0 commit comments

Comments
 (0)