File tree 4 files changed +20
-3
lines changed 4 files changed +20
-3
lines changed Original file line number Diff line number Diff line change @@ -34,6 +34,9 @@ export const isApiValidationError = (error: unknown): error is ApiError => {
34
34
return isApiError ( error ) && hasApiFieldErrors ( error )
35
35
}
36
36
37
+ export const hasError = ( error : unknown ) =>
38
+ error !== undefined && error !== null
39
+
37
40
export const mapApiErrorToFieldErrors = (
38
41
apiErrorResponse : ApiErrorResponse ,
39
42
) : FieldErrors => {
Original file line number Diff line number Diff line change @@ -22,6 +22,11 @@ import { useQuery } from "@tanstack/react-query"
22
22
import { getUsers , getTemplates } from "api/api"
23
23
import Skeleton , { SkeletonProps } from "@mui/material/Skeleton"
24
24
import CheckOutlined from "@mui/icons-material/CheckOutlined"
25
+ import {
26
+ getValidationErrorMessage ,
27
+ hasError ,
28
+ isApiValidationError ,
29
+ } from "api/errors"
25
30
26
31
/** Filter */
27
32
@@ -323,14 +328,17 @@ const FilterSkeleton = (props: SkeletonProps) => {
323
328
export const Filter = ( {
324
329
filter,
325
330
autocomplete,
331
+ error,
326
332
} : {
327
333
filter : UseFilterResult
334
+ error ?: unknown
328
335
autocomplete : {
329
336
users ?: UsersAutocomplete
330
337
templates : TemplatesAutocomplete
331
338
status : StatusAutocomplete
332
339
}
333
340
} ) => {
341
+ const shouldDisplayError = hasError ( error ) && isApiValidationError ( error )
334
342
const hasFilterQuery = filter . query !== ""
335
343
const isIinitializingFilters =
336
344
autocomplete . status . isInitializing ||
@@ -351,6 +359,10 @@ export const Filter = ({
351
359
return (
352
360
< Box display = "flex" sx = { { gap : 1 , mb : 2 } } >
353
361
< TextField
362
+ error = { shouldDisplayError }
363
+ helperText = {
364
+ shouldDisplayError ? getValidationErrorMessage ( error ) : undefined
365
+ }
354
366
sx = { { width : "100%" } }
355
367
color = "success"
356
368
size = "small"
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ import difference from "lodash/difference"
18
18
import { ImpendingDeletionBanner } from "components/WorkspaceDeletion"
19
19
import { ErrorAlert } from "components/Alert/ErrorAlert"
20
20
import { Filter } from "./Filter"
21
+ import { hasError , isApiValidationError } from "api/errors"
21
22
22
23
export const Language = {
23
24
pageTitle : "Workspaces" ,
@@ -98,7 +99,7 @@ export const WorkspacesPageView: FC<
98
99
</ PageHeader >
99
100
100
101
< Stack >
101
- < Maybe condition = { Boolean ( error ) } >
102
+ < Maybe condition = { hasError ( error ) && ! isApiValidationError ( error ) } >
102
103
< ErrorAlert error = { error } />
103
104
</ Maybe >
104
105
< ImpendingDeletionBanner
@@ -112,7 +113,7 @@ export const WorkspacesPageView: FC<
112
113
}
113
114
/>
114
115
115
- < Filter { ...filterProps } />
116
+ < Filter error = { error } { ...filterProps } />
116
117
</ Stack >
117
118
< WorkspacesTable
118
119
workspaces = { workspaces }
Original file line number Diff line number Diff line change @@ -26,7 +26,8 @@ export const useWorkspacesData = ({
26
26
limit,
27
27
query,
28
28
} : UseWorkspacesDataParams ) => {
29
- const queryKey = [ "workspaces" , query , page ]
29
+ const debouncedQuery = useState ( query )
30
+ const queryKey = [ "workspaces" , debouncedQuery , page ]
30
31
const [ shouldRefetch , setShouldRefetch ] = useState ( true )
31
32
const result = useQuery ( {
32
33
queryKey,
You can’t perform that action at this time.
0 commit comments