Skip to content

Commit 68fabb5

Browse files
Merge pull request #529 from jakubbortlik/fix/use-pagination-to-list-discussions
fix: use pagination to list MR discussions
2 parents 4d7da05 + 946b718 commit 68fabb5

2 files changed

Lines changed: 7 additions & 19 deletions

File tree

cmd/app/list_discussions.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package app
22

33
import (
44
"net/http"
5+
"slices"
56
"sort"
67
"sync"
78
"time"
@@ -90,18 +91,16 @@ func (a discussionsListerService) ServeHTTP(w http.ResponseWriter, r *http.Reque
9091
},
9192
}
9293

93-
discussions, res, err := a.client.ListMergeRequestDiscussions(a.projectInfo.ProjectId, a.projectInfo.MergeId, &mergeRequestDiscussionOptions)
94+
it, hasErr := gitlab.Scan(func(p gitlab.PaginationOptionFunc) ([]*gitlab.Discussion, *gitlab.Response, error) {
95+
return a.client.ListMergeRequestDiscussions(a.projectInfo.ProjectId, a.projectInfo.MergeId, &mergeRequestDiscussionOptions, p)
96+
})
97+
discussions := slices.Collect(it)
9498

95-
if err != nil {
99+
if err := hasErr(); err != nil {
96100
handleError(w, err, "Could not list discussions", http.StatusInternalServerError)
97101
return
98102
}
99103

100-
if res.StatusCode >= 300 {
101-
handleError(w, GenericError{r.URL.Path}, "Could not list discussions", res.StatusCode)
102-
return
103-
}
104-
105104
/* Filter out any discussions started by a blacklisted user
106105
and system discussions, then return them sorted by created date */
107106
var unlinkedDiscussions []*gitlab.Discussion
@@ -124,7 +123,7 @@ func (a discussionsListerService) ServeHTTP(w http.ResponseWriter, r *http.Reque
124123

125124
/* Collect IDs in order to fetch emojis */
126125
var noteIds []int64
127-
for _, discussion := range discussions {
126+
for _, discussion := range slices.Concat(linkedDiscussions, unlinkedDiscussions) {
128127
for _, note := range discussion.Notes {
129128
noteIds = append(noteIds, note.ID)
130129
}

cmd/app/list_discussions_test.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -127,17 +127,6 @@ func TestListDiscussions(t *testing.T) {
127127
data, _ := getFailData(t, svc, request)
128128
checkErrorFromGitlab(t, data, "Could not list discussions")
129129
})
130-
t.Run("Handles non-200s from Gitlab client", func(t *testing.T) {
131-
request := makeRequest(t, http.MethodPost, "/mr/discussions/list", DiscussionsRequest{Blacklist: []string{}})
132-
svc := middleware(
133-
discussionsListerService{testProjectData, fakeDiscussionsLister{testBase: testBase{status: http.StatusSeeOther}}},
134-
withMr(testProjectData, fakeMergeRequestLister{}),
135-
withPayloadValidation(methodToPayload{http.MethodPost: newPayload[DiscussionsRequest]}),
136-
withMethodCheck(http.MethodPost),
137-
)
138-
data, _ := getFailData(t, svc, request)
139-
checkNon200(t, data, "Could not list discussions", "/mr/discussions/list")
140-
})
141130
t.Run("Handles error from emoji service", func(t *testing.T) {
142131
request := makeRequest(t, http.MethodPost, "/mr/discussions/list", DiscussionsRequest{Blacklist: []string{}})
143132
svc := middleware(

0 commit comments

Comments
 (0)