@@ -31,7 +31,10 @@ import {
3131 SelectTrigger ,
3232 SelectValue ,
3333} from '@/components/ui/select' ;
34- import { useAutocompleteData } from '@/hooks/use-funnels' ;
34+ import {
35+ type AutocompleteData ,
36+ useAutocompleteData ,
37+ } from '@/hooks/use-funnels' ;
3538import { operatorOptions } from '@/hooks/use-filters' ;
3639import { Skeleton } from '@/components/ui/skeleton' ;
3740
@@ -198,19 +201,19 @@ function FilterSelectionForm({
198201function FilterForm ( {
199202 addFilter,
200203 setIsDropdownOpen,
204+ autocompleteData,
205+ isAutocompleteDataLoading,
206+ isAutocompleteDataError,
201207} : {
202208 addFilter : ( filter : DynamicQueryFilter ) => void ;
203209 setIsDropdownOpen : ( isOpen : boolean ) => void ;
210+ autocompleteData : AutocompleteData | undefined ;
211+ isAutocompleteDataLoading : boolean ;
212+ isAutocompleteDataError : boolean ;
204213} ) {
205214 const [ filterBeingEdited , setFilterBeingEdited ] =
206215 useState < FilterOption | null > ( null ) ;
207216
208- const { id } = useParams ( ) ;
209- const websiteId = id as string ;
210-
211- // TODO: Refactor this to a "useSuggestions" hook
212- const autocompleteQuery = useAutocompleteData ( websiteId ) ;
213- const autocompleteData = autocompleteQuery . data ;
214217 const getSuggestions = useCallback (
215218 ( field : string ) : string [ ] => {
216219 if ( ! autocompleteData ) {
@@ -239,15 +242,15 @@ function FilterForm({
239242 [ autocompleteData ]
240243 ) ;
241244
242- if ( autocompleteQuery . isError ) {
245+ if ( isAutocompleteDataError ) {
243246 return (
244247 < div className = "p-4 text-destructive text-sm" >
245248 Failed to load filter suggestions. Please try again.
246249 </ div >
247250 ) ;
248251 }
249252
250- if ( autocompleteQuery . isLoading ) {
253+ if ( isAutocompleteDataLoading ) {
251254 const numberOfFilters = filterOptions . length ;
252255 return (
253256 < div className = "flex flex-col gap-2" >
@@ -288,6 +291,13 @@ export function AddFilterForm({
288291 buttonText ?: string ;
289292} ) {
290293 const [ isOpen , setIsOpen ] = useState ( false ) ;
294+
295+ const { id } = useParams ( ) ;
296+ const websiteId = id as string ;
297+
298+ const autocompleteQuery = useAutocompleteData ( websiteId ) ;
299+ const autocompleteData = autocompleteQuery . data ;
300+
291301 return (
292302 < DropdownMenu onOpenChange = { setIsOpen } open = { isOpen } >
293303 < DropdownMenuTrigger asChild >
@@ -305,7 +315,13 @@ export function AddFilterForm({
305315 </ DropdownMenuTrigger >
306316 < DropdownMenuContent align = "end" className = "w-[300px]" side = "bottom" >
307317 < Suspense fallback = { < div > Loading...</ div > } >
308- < FilterForm addFilter = { addFilter } setIsDropdownOpen = { setIsOpen } />
318+ < FilterForm
319+ addFilter = { addFilter }
320+ autocompleteData = { autocompleteData }
321+ isAutocompleteDataError = { autocompleteQuery . isError }
322+ isAutocompleteDataLoading = { autocompleteQuery . isLoading }
323+ setIsDropdownOpen = { setIsOpen }
324+ />
309325 </ Suspense >
310326 </ DropdownMenuContent >
311327 </ DropdownMenu >
0 commit comments