@@ -6,10 +6,11 @@ import { z } from 'zod';
66import type { FilterComponentProps , FilterConfig } from '@/lib/filters/filter-types' ;
77import { isMulti } from '@/lib/filters/schemas' ;
88import { gql } from '@/lib/graphql/helpers' ;
9- import type { AccountHoverCardFieldsFragment } from '@/lib/graphql/types/v2/graphql' ;
9+ import type { AccountHoverCardFieldsFragment , HostContext } from '@/lib/graphql/types/v2/graphql' ;
1010import type { ExpectedFundsFilter } from '@/lib/graphql/types/v2/schema' ;
1111
1212import { accountHoverCardFields } from '../../AccountHoverCard' ;
13+ import type { FilterValues as OrderFilterValues } from '../sections/contributions/filters' ;
1314
1415import ComboSelectFilter from './ComboSelectFilter' ;
1516import { AccountRenderer } from './HostedAccountFilter' ;
@@ -20,8 +21,15 @@ const createdByFilterSearchQuery = gql`
2021 $searchTerm: String
2122 $expectedFundsFilter: ExpectedFundsFilter
2223 $hostContext: HostContext
24+ $status: [OrderStatus]
2325 ) {
24- orders(account: $account, filter: INCOMING, expectedFundsFilter: $expectedFundsFilter, hostContext: $hostContext) {
26+ orders(
27+ account: $account
28+ filter: INCOMING
29+ expectedFundsFilter: $expectedFundsFilter
30+ hostContext: $hostContext
31+ status: $status
32+ ) {
2533 createdByUsers(searchTerm: $searchTerm, limit: 20) {
2634 nodes {
2735 id
@@ -33,7 +41,7 @@ const createdByFilterSearchQuery = gql`
3341 ${ accountHoverCardFields }
3442` ;
3543
36- export type CreatedByFilterMeta = {
44+ export type OrderCreatedByFilterMeta = {
3745 accountSlug : string ;
3846 expectedFundsFilter ?: ExpectedFundsFilter ;
3947} ;
@@ -46,13 +54,19 @@ const resultNodeToOption = (account: Partial<AccountHoverCardFieldsFragment>) =>
4654 value : account . slug ,
4755} ) ;
4856
49- // This filter is currently only for Host Expected Funds,
50- // if generalized to other tools we should provide the correct filters through the metadata
51- function CreatedByFilter ( { meta, ...props } : FilterComponentProps < z . infer < typeof schema > , CreatedByFilterMeta > ) {
52- const [ options , setOptions ] = React . useState < { label : React . ReactNode ; keywords : string [ ] ; value : string } [ ] > ( [ ] ) ;
57+ type RequiredFilterValueTypes = {
58+ hostContext ?: HostContext ;
59+ expectedFundsFilter ?: ExpectedFundsFilter ;
60+ status ?: OrderFilterValues [ 'status' ] ;
61+ } ;
5362
63+ function OrderCreatedByFilter ( {
64+ meta,
65+ values,
66+ ...props
67+ } : FilterComponentProps < z . infer < typeof schema > , OrderCreatedByFilterMeta , RequiredFilterValueTypes > ) {
68+ const [ options , setOptions ] = React . useState < { label : React . ReactNode ; keywords : string [ ] ; value : string } [ ] > ( [ ] ) ;
5469 const [ search , { loading, data } ] = useLazyQuery ( createdByFilterSearchQuery , {
55- variables : { expectedFundsFilter : 'ONLY_PENDING' , hostContext : 'ALL' } ,
5670 fetchPolicy : 'cache-first' ,
5771 notifyOnNetworkStatusChange : true ,
5872 } ) ;
@@ -63,11 +77,13 @@ function CreatedByFilter({ meta, ...props }: FilterComponentProps<z.infer<typeof
6377 variables : {
6478 account : { slug : meta . accountSlug } ,
6579 searchTerm : searchTerm || undefined ,
66- account : { slug : meta . accountSlug } ,
80+ hostContext : values . hostContext ,
81+ expectedFundsFilter : values . expectedFundsFilter ,
82+ status : values . status ,
6783 } ,
6884 } ) ;
6985 } ,
70- [ meta . accountSlug , search ] ,
86+ [ meta . accountSlug , search , values . hostContext , values . expectedFundsFilter , values . status ] ,
7187 ) ;
7288
7389 // Load initial options on mount
@@ -76,9 +92,12 @@ function CreatedByFilter({ meta, ...props }: FilterComponentProps<z.infer<typeof
7692 variables : {
7793 account : { slug : meta . accountSlug } ,
7894 searchTerm : undefined ,
95+ hostContext : values . hostContext ,
96+ expectedFundsFilter : values . expectedFundsFilter ,
97+ status : values . status ,
7998 } ,
8099 } ) ;
81- } , [ meta . accountSlug , search ] ) ;
100+ } , [ meta . accountSlug , search , values . hostContext , values . expectedFundsFilter , values . status ] ) ;
82101
83102 React . useEffect ( ( ) => {
84103 if ( ! loading && data ?. orders ?. createdByUsers ?. nodes ) {
@@ -89,11 +108,11 @@ function CreatedByFilter({ meta, ...props }: FilterComponentProps<z.infer<typeof
89108 return < ComboSelectFilter options = { options } loading = { loading } searchFunc = { searchFunc } isMulti { ...props } /> ;
90109}
91110
92- export const createdByFilter : FilterConfig < z . infer < typeof schema > > = {
111+ export const orderCreatedByFilter : FilterConfig < z . infer < typeof schema > > = {
93112 schema : schema ,
94113 filter : {
95114 labelMsg : defineMessage ( { defaultMessage : 'Created by' , id : 'Agreement.createdBy' } ) ,
96- Component : CreatedByFilter ,
115+ Component : OrderCreatedByFilter ,
97116 valueRenderer : ( { value, ...props } ) => < AccountRenderer account = { { slug : value } } { ...props } /> ,
98117 } ,
99118 toVariables : ( values , key ) => ( { [ key ] : values . map ( slug => ( { slug } ) ) } ) ,
0 commit comments