66use Code16 \Sharp \Filters \Filter ;
77use Code16 \Sharp \Filters \GlobalRequiredFilter ;
88use Illuminate \Contracts \Support \Arrayable ;
9+ use Illuminate \Support \Collection ;
910
1011final class GlobalFilters implements Arrayable
1112{
1213 use HasFilters;
1314
1415 public static string $ defaultKey = 'root ' ;
1516 public static string $ valuesUrlSeparator = '~ ' ;
17+ private ?Collection $ globalFilters = null ;
1618
1719 public function getFilters (): array
1820 {
19- return collect (sharp ()->config ()->get ('global_filters ' ))
20- ->filter (fn (GlobalRequiredFilter $ filter ) => $ filter ->authorize ())
21- ->all ();
21+ if ($ this ->globalFilters === null ) {
22+ $ this ->globalFilters = collect (sharp ()->config ()->get ('global_filters ' ))
23+ ->filter (fn (GlobalRequiredFilter $ filter ) => $ filter ->authorize ())
24+ ->values ();
25+ }
26+
27+ return $ this ->globalFilters ->all ();
2228 }
2329
2430 public function isEnabled (): bool
@@ -35,15 +41,11 @@ public function toArray(): array
3541 'filterValues ' => [
3642 'default ' => $ this ->filterContainer ()->getFilterHandlers ()
3743 ->flatten ()
38- ->mapWithKeys (function (Filter $ handler ) {
39- return [$ handler ->getKey () => $ handler ->defaultValue ()];
40- })
44+ ->mapWithKeys (fn (Filter $ handler ) => [$ handler ->getKey () => $ handler ->defaultValue ()])
4145 ->toArray (),
4246 'current ' => $ this ->filterContainer ()->getFilterHandlers ()
4347 ->flatten ()
44- ->mapWithKeys (function (Filter $ handler ) {
45- return [$ handler ->getKey () => $ handler ->currentValue ()];
46- })
48+ ->mapWithKeys (fn (Filter $ handler ) => [$ handler ->getKey () => $ handler ->currentValue ()])
4749 ->toArray (),
4850 'valuated ' => [], // not needed here
4951 ],
0 commit comments