@@ -5,8 +5,8 @@ import type { UseQueryResult } from '@tanstack/react-query';
5
5
import type { AxiosError } from 'axios' ;
6
6
7
7
import { createContext } from 'src/core/contexts/context' ;
8
- import { DisplayError as DefaultDisplayError } from 'src/core/errorHandling/DisplayError' ;
9
- import { Loader as DefaultLoader } from 'src/core/loading/Loader' ;
8
+ import { DisplayError } from 'src/core/errorHandling/DisplayError' ;
9
+ import { Loader } from 'src/core/loading/Loader' ;
10
10
import type { LaxContextProps , StrictContextProps } from 'src/core/contexts/context' ;
11
11
12
12
type Err = Error | AxiosError ;
@@ -18,17 +18,9 @@ type Query<Req extends boolean, QueryData> = () => Req extends true
18
18
19
19
type ContextProps < Ctx , Req extends boolean > = Req extends true ? StrictContextProps : LaxContextProps < Ctx > ;
20
20
21
- export type QueryContextProps < QueryData , Req extends boolean , ContextData = QueryData > = ContextProps <
22
- ContextData ,
23
- Req
24
- > & {
21
+ export type QueryContextProps < QueryData , Req extends boolean > = ContextProps < QueryData , Req > & {
25
22
query : Query < Req , QueryData > ;
26
-
27
- process ?: ( data : QueryData ) => ContextData ;
28
23
shouldDisplayError ?: ( error : Err ) => boolean ;
29
-
30
- DisplayError ?: React . ComponentType < { error : Err } > ;
31
- Loader ?: React . ComponentType < { reason : string } > ;
32
24
} ;
33
25
34
26
/**
@@ -38,26 +30,16 @@ export type QueryContextProps<QueryData, Req extends boolean, ContextData = Quer
38
30
* Remember to call this through a delayedContext() call to prevent problems with cyclic imports.
39
31
* @see delayedContext
40
32
*/
41
- export function createQueryContext < QD , Req extends boolean , CD = QD > ( props : QueryContextProps < QD , Req , CD > ) {
42
- const {
43
- name,
44
- required,
45
- query,
46
- process = ( i : QD ) => i as unknown as CD ,
47
- shouldDisplayError = ( ) => true ,
48
- DisplayError = DefaultDisplayError ,
49
- Loader = DefaultLoader ,
50
- ...rest
51
- } = props ;
33
+ export function createQueryContext < QD , Req extends boolean > ( props : QueryContextProps < QD , Req > ) {
34
+ const { name, required, query : useQuery , shouldDisplayError = ( ) => true , ...rest } = props ;
52
35
// eslint-disable-next-line @typescript-eslint/no-explicit-any
53
- const { Provider, useCtx, useLaxCtx, useHasProvider } = createContext < CD > ( { name, required, ...( rest as any ) } ) ;
54
- const defaultValue = ( 'default' in rest ? rest . default : undefined ) as CD ;
36
+ const { Provider, useCtx, useLaxCtx, useHasProvider } = createContext < QD > ( { name, required, ...( rest as any ) } ) ;
37
+ const defaultValue = ( 'default' in rest ? rest . default : undefined ) as QD ;
55
38
56
- const WrappingProvider = ( { children } : PropsWithChildren ) => {
57
- const { data, isPending, error, ...rest } = query ( ) ;
39
+ function WrappingProvider ( { children } : PropsWithChildren ) {
40
+ const { data, isPending, error, ...rest } = useQuery ( ) ;
58
41
const enabled = 'enabled' in rest && ! required ? rest . enabled : true ;
59
-
60
- const value = useMemo ( ( ) => ( typeof data !== 'undefined' ? process ( data ) : undefined ) , [ data ] ) ;
42
+ const value = useMemo ( ( ) => data , [ data ] ) ;
61
43
62
44
if ( enabled && isPending ) {
63
45
return < Loader reason = { `query-${ name } ` } /> ;
@@ -68,7 +50,7 @@ export function createQueryContext<QD, Req extends boolean, CD = QD>(props: Quer
68
50
}
69
51
70
52
return < Provider value = { enabled ? ( value ?? defaultValue ) : defaultValue } > { children } </ Provider > ;
71
- } ;
53
+ }
72
54
73
55
return {
74
56
Provider : WrappingProvider ,
0 commit comments