@@ -2,23 +2,26 @@ import {useMutation, useQuery} from 'react-query';
2
2
import { HomeApi } from '../../apis' ;
3
3
import queryClient from '../../helpers/queryClient' ;
4
4
import { IItemHome } from '../../models' ;
5
+ import { HOME_SCREEN } from '../queryKey' ;
5
6
6
7
const useHomeFetchQuery = ( ) =>
7
- useQuery ( 'home' , ( ) => HomeApi . fetchData ( 1 , 30 ) ) ;
8
+ useQuery ( HOME_SCREEN . HOME , ( ) => HomeApi . fetchData ( 1 , 30 ) ) ;
8
9
const useAddQuery = ( ) =>
9
10
useMutation ( ( newTodo : string ) => HomeApi . createData ( newTodo ) , {
10
11
// When mutate is called:
11
12
onMutate : async ( newTodo : string ) => {
12
13
// Cancel any outgoing refetches (so they don't overwrite our optimistic update)
13
- await queryClient . cancelQueries ( 'home' ) ;
14
+ await queryClient . cancelQueries ( HOME_SCREEN . HOME ) ;
14
15
15
16
// Snapshot the previous value
16
- const previousTodos = queryClient . getQueryData < IItemHome [ ] > ( 'home' ) ;
17
+ const previousTodos = queryClient . getQueryData < IItemHome [ ] > (
18
+ HOME_SCREEN . HOME ,
19
+ ) ;
17
20
18
21
// Optimistically update to the new value
19
22
if ( previousTodos ) {
20
23
queryClient . setQueryData < IItemHome [ ] > (
21
- 'home' ,
24
+ HOME_SCREEN . HOME ,
22
25
( old : any ) : IItemHome [ ] => [ ...old , newTodo ] ,
23
26
) ;
24
27
}
@@ -31,12 +34,15 @@ const useAddQuery = () =>
31
34
const defaultMutationOptions = {
32
35
onError : ( err : unknown , variables : any , context : any ) => {
33
36
if ( context ?. previousTodos ) {
34
- queryClient . setQueryData < IItemHome [ ] > ( 'home' , context . previousTodos ) ;
37
+ queryClient . setQueryData < IItemHome [ ] > (
38
+ HOME_SCREEN . HOME ,
39
+ context . previousTodos ,
40
+ ) ;
35
41
}
36
42
} ,
37
43
// Always refetch after error or success:
38
44
onSettled : ( ) => {
39
- queryClient . invalidateQueries ( 'home' ) ;
45
+ queryClient . invalidateQueries ( HOME_SCREEN . HOME ) ;
40
46
} ,
41
47
} ;
42
48
@@ -45,15 +51,19 @@ const useDeleteQuery = () =>
45
51
// When mutate is called:
46
52
onMutate : async ( id : number ) => {
47
53
// Cancel any outgoing refetches (so they don't overwrite our optimistic update)
48
- await queryClient . cancelQueries ( 'home' ) ;
54
+ await queryClient . cancelQueries ( HOME_SCREEN . HOME ) ;
49
55
50
56
// Snapshot the previous value
51
- const previousTodos = queryClient . getQueryData < IItemHome [ ] > ( 'home' ) ;
57
+ const previousTodos = queryClient . getQueryData < IItemHome [ ] > (
58
+ HOME_SCREEN . HOME ,
59
+ ) ;
52
60
53
61
// Optimistically update to the new value
54
62
if ( previousTodos ) {
55
- queryClient . setQueryData < IItemHome [ ] > ( 'home' , ( old : any ) : IItemHome [ ] =>
56
- old . filter ( ( item : IItemHome ) => item . id !== id ) ,
63
+ queryClient . setQueryData < IItemHome [ ] > (
64
+ HOME_SCREEN . HOME ,
65
+ ( old : any ) : IItemHome [ ] =>
66
+ old . filter ( ( item : IItemHome ) => item . id !== id ) ,
57
67
) ;
58
68
}
59
69
@@ -63,32 +73,36 @@ const useDeleteQuery = () =>
63
73
} ) ;
64
74
65
75
const useGetDetailQuery = ( todoId : number ) =>
66
- useQuery ( [ 'home' , todoId ] , ( ) => HomeApi . getDetail ( todoId ) , {
76
+ useQuery ( [ HOME_SCREEN . HOME , todoId ] , ( ) => HomeApi . getDetail ( todoId ) , {
67
77
initialData : ( ) =>
68
78
queryClient
69
- . getQueryData < IItemHome [ ] > ( 'home' )
79
+ . getQueryData < IItemHome [ ] > ( HOME_SCREEN . HOME )
70
80
?. find ( ( d : IItemHome ) => d . id === todoId ) ,
71
81
} ) ;
72
82
73
83
const useUpdateListItem = ( ) =>
74
84
useMutation ( ( updates : IItemHome ) => HomeApi . updateItem ( updates ) , {
75
85
// When mutate is called:
76
86
onMutate : async ( updates : IItemHome ) => {
77
- await queryClient . cancelQueries ( 'home' ) ;
87
+ await queryClient . cancelQueries ( HOME_SCREEN . HOME ) ;
78
88
// Snapshot the previous value
79
- const previousTodos = queryClient . getQueryData < IItemHome [ ] > ( 'home' ) ;
89
+ const previousTodos = queryClient . getQueryData < IItemHome [ ] > (
90
+ HOME_SCREEN . HOME ,
91
+ ) ;
80
92
81
93
// Optimistically update to the new value
82
94
83
95
if ( previousTodos ) {
84
- queryClient . setQueryData < IItemHome [ ] > ( 'home' , ( old : any ) : IItemHome [ ] =>
85
- old . map ( ( item : IItemHome ) => {
86
- return item . id === updates . id ? { ...item , ...updates } : item ;
87
- } ) ,
96
+ queryClient . setQueryData < IItemHome [ ] > (
97
+ HOME_SCREEN . HOME ,
98
+ ( old : any ) : IItemHome [ ] =>
99
+ old . map ( ( item : IItemHome ) => {
100
+ return item . id === updates . id ? { ...item , ...updates } : item ;
101
+ } ) ,
88
102
) ;
89
103
}
90
104
91
- return ( ) => queryClient . setQueryData ( 'home' , previousTodos ) ;
105
+ return ( ) => queryClient . setQueryData ( HOME_SCREEN . HOME , previousTodos ) ;
92
106
} ,
93
107
...defaultMutationOptions ,
94
108
} ) ;
0 commit comments