aboutsummaryrefslogtreecommitdiffstats
path: root/bridge/gitlab/iterator.go
diff options
context:
space:
mode:
authorAmine <hilalyamine@gmail.com>2019-10-02 15:39:24 +0200
committerAmine <hilalyamine@gmail.com>2019-10-02 15:39:24 +0200
commit312bc58c540902901ca9ad7238b4cf85eefb9d24 (patch)
tree772940e0b78a8838fcc7840c0f40d8cd0f456385 /bridge/gitlab/iterator.go
parent8498deaa194f7ad3d69787d89e26feb280986d5c (diff)
downloadgit-bug-312bc58c540902901ca9ad7238b4cf85eefb9d24.tar.gz
bridge/gitlab: iterator now query all label events when NextLabelEvent() i called, and sort them by ID
Diffstat (limited to 'bridge/gitlab/iterator.go')
-rw-r--r--bridge/gitlab/iterator.go55
1 files changed, 27 insertions, 28 deletions
diff --git a/bridge/gitlab/iterator.go b/bridge/gitlab/iterator.go
index d5425cee..aef68faa 100644
--- a/bridge/gitlab/iterator.go
+++ b/bridge/gitlab/iterator.go
@@ -224,40 +224,39 @@ func (i *iterator) NoteValue() *gitlab.Note {
return i.note.cache[i.note.index]
}
-func (i *iterator) getNextLabelEvents() bool {
+func (i *iterator) getLabelEvents() bool {
ctx, cancel := context.WithTimeout(i.ctx, defaultTimeout)
defer cancel()
- labelEvents, _, err := i.gc.ResourceLabelEvents.ListIssueLabelEvents(
- i.project,
- i.IssueValue().IID,
- &gitlab.ListLabelEventsOptions{
- ListOptions: gitlab.ListOptions{
- Page: i.labelEvent.page,
- PerPage: i.capacity,
+ hasNextPage := true
+ for hasNextPage {
+ labelEvents, _, err := i.gc.ResourceLabelEvents.ListIssueLabelEvents(
+ i.project,
+ i.IssueValue().IID,
+ &gitlab.ListLabelEventsOptions{
+ ListOptions: gitlab.ListOptions{
+ Page: i.labelEvent.page,
+ PerPage: i.capacity,
+ },
},
- },
- gitlab.WithContext(ctx),
- )
-
- if err != nil {
- i.err = err
- return false
- }
-
- if len(labelEvents) == 0 {
- i.labelEvent.page = 1
- i.labelEvent.index = -1
- i.labelEvent.cache = nil
- return false
+ gitlab.WithContext(ctx),
+ )
+ if err != nil {
+ i.err = err
+ return false
+ }
+
+ i.labelEvent.page++
+ hasNextPage = len(labelEvents) != 0
+ i.labelEvent.cache = append(i.labelEvent.cache, labelEvents...)
}
- i.labelEvent.cache = labelEvents
- i.labelEvent.page++
+ i.labelEvent.page = 1
i.labelEvent.index = 0
-
sort.Sort(i.labelEvent)
- return true
+
+ // if the label events list is empty return false
+ return len(i.labelEvent.cache) != 0
}
// because Gitlab
@@ -271,7 +270,7 @@ func (i *iterator) NextLabelEvent() bool {
}
if len(i.labelEvent.cache) == 0 {
- return i.getNextLabelEvents()
+ return i.getLabelEvents()
}
// move cursor index
@@ -280,7 +279,7 @@ func (i *iterator) NextLabelEvent() bool {
return true
}
- return i.getNextLabelEvents()
+ return false
}
func (i *iterator) LabelEventValue() *gitlab.LabelEvent {