Signed-off-by: dusk y.bera003.06@protonmail.com
ERROR
appview/db/issues.go
ERROR
appview/db/issues.go
Failed to calculate interdiff for this file.
REBASED
appview/issues/issues.go
REBASED
appview/issues/issues.go
This patch was likely rebased, as context lines do not match.
REBASED
appview/issues/router.go
REBASED
appview/issues/router.go
This patch was likely rebased, as context lines do not match.
ERROR
appview/middleware/middleware.go
ERROR
appview/middleware/middleware.go
Failed to calculate interdiff for this file.
ERROR
appview/pages/pages.go
ERROR
appview/pages/pages.go
Failed to calculate interdiff for this file.
ERROR
appview/pages/templates/repo/issues/issues.html
ERROR
appview/pages/templates/repo/issues/issues.html
Failed to calculate interdiff for this file.
REBASED
appview/pagination/page.go
REBASED
appview/pagination/page.go
This patch was likely rebased, as context lines do not match.
REBASED
appview/repo/feed.go
REBASED
appview/repo/feed.go
This patch was likely rebased, as context lines do not match.
NEW
appview/db/notifications.go
NEW
appview/db/notifications.go
···
68
68
limit ? offset ?
69
69
`, whereClause)
70
70
71
-
args = append(args, page.Limit, page.Offset)
71
+
args = append(args, page.Count, page.Count*page.No+1)
72
72
73
73
rows, err := e.QueryContext(context.Background(), query, args...)
74
74
if err != nil {
···
142
142
limit ? offset ?
143
143
`, whereClause)
144
144
145
-
args = append(args, page.Limit, page.Offset)
145
+
args = append(args, page.Count, page.Count*page.No+1)
146
146
147
147
rows, err := e.QueryContext(context.Background(), query, args...)
148
148
if err != nil {
···
247
247
248
248
// GetNotifications retrieves notifications with filters
249
249
func GetNotifications(e Execer, filters ...filter) ([]*models.Notification, error) {
250
-
return GetNotificationsPaginated(e, pagination.FirstPage(), filters...)
250
+
return GetNotificationsPaginated(e, pagination.Page{No: 0, Count: 30}, filters...)
251
251
}
252
252
253
253
func CountNotifications(e Execer, filters ...filter) (int64, error) {
NEW
appview/notifications/notifications.go
NEW
appview/notifications/notifications.go
···
34
34
35
35
r.Group(func(r chi.Router) {
36
36
r.Use(middleware.AuthMiddleware(n.oauth))
37
-
r.With(middleware.Paginate).Get("/", n.notificationsPage)
37
+
r.With(middleware.Paginate(30)).Get("/", n.notificationsPage)
38
38
r.Post("/{id}/read", n.markRead)
39
39
r.Post("/read-all", n.markAllRead)
40
40
r.Delete("/{id}", n.deleteNotification)
···
49
49
page, ok := r.Context().Value("page").(pagination.Page)
50
50
if !ok {
51
51
log.Println("failed to get page")
52
-
page = pagination.FirstPage()
52
+
page = pagination.Page{No: 0, Count: 30}
53
53
}
54
54
55
55
total, err := db.CountNotifications(
···
61
61
n.pages.Error500(w)
62
62
return
63
63
}
64
+
paginate := pagination.NewFromPage(page, int(total))
64
65
65
66
notifications, err := db.GetNotificationsWithEntities(
66
67
n.db,
···
84
85
LoggedInUser: user,
85
86
Notifications: notifications,
86
87
UnreadCount: unreadCount,
87
-
Page: page,
88
+
Pagination: paginate,
88
89
Total: total,
89
90
})
90
91
}
NEW
appview/pages/templates/goodfirstissues/index.html
NEW
appview/pages/templates/goodfirstissues/index.html
···
130
130
</div>
131
131
{{ end }}
132
132
133
-
{{ if or (gt .Page.Offset 0) (eq (len .RepoGroups) .Page.Limit) }}
133
+
{{ if or .Pagination.HasPreviousPage .Pagination.HasNextPage }}
134
134
<div class="flex justify-center mt-8">
135
135
<div class="flex gap-2">
136
-
{{ if gt .Page.Offset 0 }}
137
-
{{ $prev := .Page.Previous }}
136
+
{{ if .Pagination.HasPreviousPage }}
137
+
{{ $prev := .Pagination.PreviousPage }}
138
138
<a
139
139
class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700"
140
140
hx-boost="true"
141
-
href="/goodfirstissues?offset={{ $prev.Offset }}&limit={{ $prev.Limit }}"
141
+
href="/goodfirstissues?page={{ add $prev.No 1 }}&count={{ $prev.Count }}"
142
142
>
143
143
{{ i "chevron-left" "w-4 h-4" }}
144
144
previous
···
147
147
<div></div>
148
148
{{ end }}
149
149
150
-
{{ if eq (len .RepoGroups) .Page.Limit }}
151
-
{{ $next := .Page.Next }}
150
+
{{ if .Pagination.HasNextPage }}
151
+
{{ $next := .Pagination.NextPage }}
152
152
<a
153
153
class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700"
154
154
hx-boost="true"
155
-
href="/goodfirstissues?offset={{ $next.Offset }}&limit={{ $next.Limit }}"
155
+
href="/goodfirstissues?page={{ add $next.No 1 }}&count={{ $next.Count }}"
156
156
>
157
157
next
158
158
{{ i "chevron-right" "w-4 h-4" }}
NEW
appview/pages/templates/notifications/list.html
NEW
appview/pages/templates/notifications/list.html
···
35
35
36
36
{{ define "pagination" }}
37
37
<div class="flex justify-end mt-4 gap-2">
38
-
{{ if gt .Page.Offset 0 }}
39
-
{{ $prev := .Page.Previous }}
38
+
{{ if .Pagination.HasPreviousPage }}
39
+
{{ $prev := .Pagination.PreviousPage }}
40
40
<a
41
41
class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700"
42
42
hx-boost="true"
43
-
href = "/notifications?offset={{ $prev.Offset }}&limit={{ $prev.Limit }}"
43
+
href = "/notifications?page={{ add $prev.No 1 }}&count={{ $prev.Count }}"
44
44
>
45
45
{{ i "chevron-left" "w-4 h-4" }}
46
46
previous
···
49
49
<div></div>
50
50
{{ end }}
51
51
52
-
{{ $next := .Page.Next }}
53
-
{{ if lt $next.Offset .Total }}
54
-
{{ $next := .Page.Next }}
52
+
{{ if .Pagination.HasNextPage }}
53
+
{{ $next := .Pagination.NextPage }}
55
54
<a
56
55
class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700"
57
56
hx-boost="true"
58
-
href = "/notifications?offset={{ $next.Offset }}&limit={{ $next.Limit }}"
57
+
href = "/notifications?page={{ add $next.No 1 }}&count={{ $next.Count }}"
59
58
>
60
59
next
61
60
{{ i "chevron-right" "w-4 h-4" }}
NEW
appview/state/gfi.go
NEW
appview/state/gfi.go
···
20
20
21
21
page, ok := r.Context().Value("page").(pagination.Page)
22
22
if !ok {
23
-
page = pagination.FirstPage()
23
+
page = pagination.Page{No: 0, Count: 30}
24
24
}
25
25
26
26
goodFirstIssueLabel := fmt.Sprintf("at://%s/%s/%s", consts.TangledDid, tangled.LabelDefinitionNSID, "good-first-issue")
···
37
37
LoggedInUser: user,
38
38
RepoGroups: []*models.RepoGroup{},
39
39
LabelDefs: make(map[string]*models.LabelDefinition),
40
-
Page: page,
40
+
Pagination: pagination.NewFromPage(page, 0),
41
41
})
42
42
return
43
43
}
···
50
50
allIssues, err := db.GetIssuesPaginated(
51
51
s.db,
52
52
pagination.Page{
53
-
Limit: 500,
53
+
No: 0,
54
+
Count: 500,
54
55
},
55
56
db.FilterIn("repo_at", repoUris),
56
57
db.FilterEq("open", 1),
···
61
62
return
62
63
}
63
64
65
+
pagination := pagination.NewFromPage(page, len(allIssues))
66
+
64
67
var goodFirstIssues []models.Issue
65
68
for _, issue := range allIssues {
66
69
if issue.Labels.ContainsLabel(goodFirstIssueLabel) {
···
98
101
return sortedGroups[i].Repo.Name < sortedGroups[j].Repo.Name
99
102
})
100
103
101
-
groupStart := page.Offset
102
-
groupEnd := page.Offset + page.Limit
104
+
groupStart := page.Count * page.No
105
+
groupEnd := page.Count * (page.No + 1)
103
106
if groupStart > len(sortedGroups) {
104
107
groupStart = len(sortedGroups)
105
108
}
···
145
148
LoggedInUser: user,
146
149
RepoGroups: paginatedGroups,
147
150
LabelDefs: labelDefsMap,
148
-
Page: page,
151
+
Pagination: pagination,
149
152
GfiLabel: labelDefsMap[goodFirstIssueLabel],
150
153
})
151
154
}