summaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2023-03-08 09:28:46 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2023-03-10 16:34:17 +0100
commit34a86e13f63c1a527e45b5de95696c6937c2043e (patch)
treedff56f07db45b17b7d647c0cbccfdccfeadf5910 /resources
parent0f01bd46374b13cdc5d7925c913bba777a58bb5b (diff)
Don't fail when calling Paginate with an empty pages.PagesGroup
Fixes #10802
Diffstat (limited to 'resources')
-rw-r--r--resources/page/pagegroup.go14
-rw-r--r--resources/page/pagination.go4
2 files changed, 9 insertions, 9 deletions
diff --git a/resources/page/pagegroup.go b/resources/page/pagegroup.go
index 99f1af3ff..d091c6bef 100644
--- a/resources/page/pagegroup.go
+++ b/resources/page/pagegroup.go
@@ -430,14 +430,14 @@ func (psg PagesGroup) ProbablyEq(other any) bool {
}
// ToPagesGroup tries to convert seq into a PagesGroup.
-func ToPagesGroup(seq any) (PagesGroup, error) {
+func ToPagesGroup(seq any) (PagesGroup, bool, error) {
switch v := seq.(type) {
case nil:
- return nil, nil
+ return nil, true, nil
case PagesGroup:
- return v, nil
+ return v, true, nil
case []PageGroup:
- return PagesGroup(v), nil
+ return PagesGroup(v), true, nil
case []any:
l := len(v)
if l == 0 {
@@ -450,12 +450,12 @@ func ToPagesGroup(seq any) (PagesGroup, error) {
if pg, ok := ipg.(PageGroup); ok {
pagesGroup[i] = pg
} else {
- return nil, fmt.Errorf("unsupported type in paginate from slice, got %T instead of PageGroup", ipg)
+ return nil, false, fmt.Errorf("unsupported type in paginate from slice, got %T instead of PageGroup", ipg)
}
}
- return pagesGroup, nil
+ return pagesGroup, true, nil
}
}
- return nil, nil
+ return nil, false, nil
}
diff --git a/resources/page/pagination.go b/resources/page/pagination.go
index 46d9fda82..ddede792f 100644
--- a/resources/page/pagination.go
+++ b/resources/page/pagination.go
@@ -277,11 +277,11 @@ func Paginate(td TargetPathDescriptor, seq any, pagerSize int) (*Paginator, erro
var paginator *Paginator
- groups, err := ToPagesGroup(seq)
+ groups, ok, err := ToPagesGroup(seq)
if err != nil {
return nil, err
}
- if groups != nil {
+ if ok {
paginator, _ = newPaginatorFromPageGroups(groups, pagerSize, urlFactory)
} else {
pages, err := ToPages(seq)