@@ -10,8 +10,11 @@ import type { ServiceTier } from '@/utils/service-tier'
1010import { toggleValueInArray } from '@/utils/toggle-value-in-array'
1111
1212import { parseNumericInput } from '../utils/parse-numeric-input'
13+ import { parseAsReachableFilterValue } from '../utils/parse-reachable-filter-value'
1314import { parseAsServiceTier } from '../utils/parse-service-tier'
1415
16+ export type ReachableFilterValue = 'true' | 'false'
17+
1518export type FilterState = {
1619 location : Array < string >
1720 capacityMin : number | null
@@ -20,8 +23,11 @@ export type FilterState = {
2023 provingPeriodMax : number | null
2124 ipni : Array < string >
2225 serviceTier : Array < ServiceTier >
26+ reachable : Array < ReachableFilterValue >
2327}
2428
29+ const DEFAULT_REACHABLE_FILTER : Array < ReachableFilterValue > = [ 'true' ]
30+
2531const filterParsers = {
2632 location : parseAsArrayOf ( parseAsString ) . withDefault ( [ ] ) ,
2733 capacityMin : parseAsInteger ,
@@ -30,6 +36,9 @@ const filterParsers = {
3036 provingPeriodMax : parseAsInteger ,
3137 ipni : parseAsArrayOf ( parseAsString ) . withDefault ( [ ] ) ,
3238 serviceTier : parseAsArrayOf ( parseAsServiceTier ) . withDefault ( [ ] ) ,
39+ reachable : parseAsArrayOf ( parseAsReachableFilterValue ) . withDefault (
40+ DEFAULT_REACHABLE_FILTER ,
41+ ) ,
3342}
3443
3544type ArrayKeys < T > = {
@@ -77,7 +86,9 @@ export function useFilterQueryState() {
7786
7887 const activeFilterCount = useMemo ( ( ) => {
7988 return Object . entries ( filterQueries ) . reduce ( ( count , [ _ , value ] ) => {
80- if ( Array . isArray ( value ) ) return count + ( value . length > 0 ? 1 : 0 )
89+ if ( Array . isArray ( value ) ) {
90+ return count + ( value . length > 0 ? 1 : 0 )
91+ }
8192 if ( value != null ) return count + 1
8293 return count
8394 } , 0 )
0 commit comments