diff --git a/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx b/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx index fc0a847ba..0e413f7f2 100644 --- a/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx +++ b/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx @@ -145,7 +145,7 @@ function useSubmitCreateAccessCode(params: { export function useResponseErrors(): { responseErrors: ResponseErrors | null - handleResponseError: (error: SeamHttpApiError) => void + handleResponseError: (error: SeamHttpApiError | Error) => void resetResponseErrors: () => void } { const [responseErrors, setResponseErrors] = useState | null>(null) - const handleResponseError = (error: SeamHttpApiError): void => { + const handleResponseError = (error: SeamHttpApiError | Error): void => { if (isSeamHttpInvalidInputError(error)) { const errors = shake({ code: error.getValidationErrorMessages('code')[0], diff --git a/src/lib/seam/use-seam-infinite-query.ts b/src/lib/seam/use-seam-infinite-query.ts index ed8eac9d9..d0f93efe8 100644 --- a/src/lib/seam/use-seam-infinite-query.ts +++ b/src/lib/seam/use-seam-infinite-query.ts @@ -1,10 +1,14 @@ import type { + SeamActionAttemptFailedError, + SeamActionAttemptTimeoutError, SeamHttpApiError, SeamHttpEndpointPaginatedQueryPaths, SeamHttpEndpoints, + SeamHttpInvalidInputError, SeamHttpRequest, SeamPageCursor, } from '@seamapi/http/connect' +import type { ActionAttempt } from '@seamapi/types/connect' import { useInfiniteQuery, type UseInfiniteQueryOptions, @@ -19,7 +23,7 @@ export type UseSeamInfiniteQueryParameters< export type UseSeamInfiniteQueryResult< T extends SeamHttpEndpointPaginatedQueryPaths, -> = UseInfiniteQueryResult, SeamHttpApiError> +> = UseInfiniteQueryResult, QueryError> export function useSeamInfiniteQuery< T extends SeamHttpEndpointPaginatedQueryPaths, @@ -27,7 +31,7 @@ export function useSeamInfiniteQuery< endpointPath: T, parameters?: UseSeamInfiniteQueryParameters, options: Parameters[1] & - QueryOptions, SeamHttpApiError> = {} + QueryOptions, QueryError> = {} ): UseSeamInfiniteQueryResult { const { endpointClient: client, queryKeyPrefixes } = useSeamClient() return useInfiniteQuery({ @@ -75,6 +79,16 @@ interface QueryData { nextPageCursor: SeamPageCursor | null } +type QueryError = + | Error + | SeamHttpApiError + | SeamHttpInvalidInputError + | (QueryData['data'] extends ActionAttempt + ? + | SeamActionAttemptFailedError['data']> + | SeamActionAttemptTimeoutError['data']> + : never) + type QueryOptions = Omit< UseInfiniteQueryOptions, 'queryKey' | 'queryFn' | 'initialPageParam' | 'getNextPageParam' diff --git a/src/lib/seam/use-seam-mutation-without-workspace.ts b/src/lib/seam/use-seam-mutation-without-workspace.ts index 6bbae1441..b1fe467a0 100644 --- a/src/lib/seam/use-seam-mutation-without-workspace.ts +++ b/src/lib/seam/use-seam-mutation-without-workspace.ts @@ -2,6 +2,7 @@ import type { SeamHttpApiError, SeamHttpEndpointsWithoutWorkspace, SeamHttpEndpointWithoutWorkspaceMutationPaths, + SeamHttpInvalidInputError, } from '@seamapi/http/connect' import { useMutation, @@ -19,7 +20,7 @@ export type UseSeamMutationWithoutWorkspaceResult< T extends SeamHttpEndpointWithoutWorkspaceMutationPaths, > = UseMutationResult< MutationData, - SeamHttpApiError, + MutationError, UseSeamMutationWithoutWorkspaceVariables > @@ -30,7 +31,7 @@ export function useSeamMutationWithoutWorkspace< options: Parameters[1] & MutationOptions< MutationData, - SeamHttpApiError, + MutationError, UseSeamMutationWithoutWorkspaceVariables > = {} ): UseSeamMutationWithoutWorkspaceResult { @@ -50,4 +51,6 @@ export function useSeamMutationWithoutWorkspace< type MutationData = Awaited> +type MutationError = Error | SeamHttpApiError | SeamHttpInvalidInputError + type MutationOptions = Omit, 'mutationFn'> diff --git a/src/lib/seam/use-seam-mutation.ts b/src/lib/seam/use-seam-mutation.ts index 001290c78..b54c789a2 100644 --- a/src/lib/seam/use-seam-mutation.ts +++ b/src/lib/seam/use-seam-mutation.ts @@ -1,8 +1,12 @@ import type { + SeamActionAttemptFailedError, + SeamActionAttemptTimeoutError, SeamHttpApiError, SeamHttpEndpointMutationPaths, SeamHttpEndpoints, + SeamHttpInvalidInputError, } from '@seamapi/http/connect' +import type { ActionAttempt } from '@seamapi/types/connect' import { useMutation, type UseMutationOptions, @@ -17,7 +21,7 @@ export type UseSeamMutationVariables = export type UseSeamMutationResult = UseMutationResult< MutationData, - SeamHttpApiError, + MutationError, UseSeamMutationVariables > @@ -26,7 +30,7 @@ export function useSeamMutation( options: Parameters[1] & MutationOptions< MutationData, - SeamHttpApiError, + MutationError, UseSeamMutationVariables > = {} ): UseSeamMutationResult { @@ -47,4 +51,14 @@ type MutationData = Awaited< ReturnType > +type MutationError = + | Error + | SeamHttpApiError + | SeamHttpInvalidInputError + | (MutationData extends ActionAttempt + ? + | SeamActionAttemptFailedError> + | SeamActionAttemptTimeoutError> + : never) + type MutationOptions = Omit, 'mutationFn'> diff --git a/src/lib/seam/use-seam-query-without-workspace.ts b/src/lib/seam/use-seam-query-without-workspace.ts index 923b35666..3067f026e 100644 --- a/src/lib/seam/use-seam-query-without-workspace.ts +++ b/src/lib/seam/use-seam-query-without-workspace.ts @@ -2,6 +2,7 @@ import type { SeamHttpApiError, SeamHttpEndpointsWithoutWorkspace, SeamHttpEndpointWithoutWorkspaceQueryPaths, + SeamHttpInvalidInputError, } from '@seamapi/http/connect' import { useQuery, @@ -17,7 +18,7 @@ export type UseSeamQueryWithoutWorkspaceParameters< export type UseSeamQueryWithoutWorkspaceResult< T extends SeamHttpEndpointWithoutWorkspaceQueryPaths, -> = UseQueryResult, SeamHttpApiError> +> = UseQueryResult, QueryError> export function useSeamQueryWithoutWorkspace< T extends SeamHttpEndpointWithoutWorkspaceQueryPaths, @@ -25,7 +26,7 @@ export function useSeamQueryWithoutWorkspace< endpointPath: T, parameters?: UseSeamQueryWithoutWorkspaceParameters, options: Parameters[1] & - QueryOptions, SeamHttpApiError> = {} + QueryOptions, QueryError> = {} ): UseSeamQueryWithoutWorkspaceResult { const { endpointClient: client, queryKeyPrefixes } = useSeamClient() return useQuery({ @@ -50,4 +51,6 @@ type QueryData = Awaited< ReturnType > +type QueryError = Error | SeamHttpApiError | SeamHttpInvalidInputError + type QueryOptions = Omit, 'queryKey' | 'queryFn'> diff --git a/src/lib/seam/use-seam-query.ts b/src/lib/seam/use-seam-query.ts index 1715a9b34..a83cc81cd 100644 --- a/src/lib/seam/use-seam-query.ts +++ b/src/lib/seam/use-seam-query.ts @@ -1,8 +1,12 @@ import type { + SeamActionAttemptFailedError, + SeamActionAttemptTimeoutError, SeamHttpApiError, SeamHttpEndpointQueryPaths, SeamHttpEndpoints, + SeamHttpInvalidInputError, } from '@seamapi/http/connect' +import type { ActionAttempt } from '@seamapi/types/connect' import { useQuery, type UseQueryOptions, @@ -15,7 +19,7 @@ export type UseSeamQueryParameters = Parameters[0] export type UseSeamQueryResult = - UseQueryResult, SeamHttpApiError> + UseQueryResult, QueryError> export function useSeamQuery( endpointPath: T, @@ -46,4 +50,14 @@ type QueryData = Awaited< ReturnType > +type QueryError = + | Error + | SeamHttpApiError + | SeamHttpInvalidInputError + | (QueryData extends ActionAttempt + ? + | SeamActionAttemptFailedError> + | SeamActionAttemptTimeoutError> + : never) + type QueryOptions = Omit, 'queryKey' | 'queryFn'>