diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-03-08 09:28:46 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-03-10 16:34:17 +0100 |
commit | 34a86e13f63c1a527e45b5de95696c6937c2043e (patch) | |
tree | dff56f07db45b17b7d647c0cbccfdccfeadf5910 /resources | |
parent | 0f01bd46374b13cdc5d7925c913bba777a58bb5b (diff) |
Don't fail when calling Paginate with an empty pages.PagesGroup
Fixes #10802
Diffstat (limited to 'resources')
-rw-r--r-- | resources/page/pagegroup.go | 14 | ||||
-rw-r--r-- | resources/page/pagination.go | 4 |
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) |