@@ -3,7 +3,7 @@ import { useMutation } from '@tanstack/react-query';
3
3
import { queries } from './queryKeys' ;
4
4
import { Member } from '@/types/Member' ;
5
5
import { useNavigate } from 'react-router-dom' ;
6
- import { useEffect } from 'react' ;
6
+ import { useEffect , useRef } from 'react' ;
7
7
8
8
interface UpdateGroupSchedule {
9
9
name : string ;
@@ -15,14 +15,23 @@ interface UpdateGroupSchedule {
15
15
newMemberList : Member [ ] ;
16
16
}
17
17
18
+ interface DialogElement {
19
+ openModal : ( ) => void ;
20
+ closeModal : ( ) => void ;
21
+ }
22
+
18
23
export const useUpdateGroupSchedule = ( ) => {
19
24
const navigator = useNavigate ( ) ;
20
25
26
+ const errorDialogRef = useRef < DialogElement | null > ( null ) ;
27
+ const successDialog = useRef < DialogElement | null > ( null ) ;
28
+
21
29
const {
22
30
mutate : updateGroupScheduleMutate ,
23
31
isPending : updateGroupScheduleIsPending ,
24
32
isSuccess : updateGroupScheduleIsSuccess ,
25
33
isError : updateGroupScheduleIsError ,
34
+ reset : updateGroupScheduleReset ,
26
35
} = useMutation ( {
27
36
mutationKey : queries . groupSchedule . update . queryKey ,
28
37
mutationFn : updateGroupSchedule ,
@@ -33,6 +42,7 @@ export const useUpdateGroupSchedule = () => {
33
42
isPending : updateGroupMemberIsPending ,
34
43
isSuccess : updateGroupMemberIsSuccess ,
35
44
isError : updateGroupMemberIsError ,
45
+ reset : updateGroupMemberReset ,
36
46
} = useMutation ( {
37
47
mutationKey : queries . group . updateMember . queryKey ,
38
48
mutationFn : updateGroupScheduleMember ,
@@ -48,13 +58,30 @@ export const useUpdateGroupSchedule = () => {
48
58
49
59
useEffect ( ( ) => {
50
60
if ( updateGroupScheduleIsSuccess && updateGroupMemberIsSuccess ) {
51
- navigator ( - 1 ) ;
61
+ successDialog . current ?. openModal ( ) ;
62
+ updateGroupMemberReset ( ) ;
63
+ updateGroupScheduleReset ( ) ;
64
+ }
65
+ } , [
66
+ updateGroupScheduleIsSuccess ,
67
+ updateGroupMemberIsSuccess ,
68
+ navigator ,
69
+ updateGroupMemberReset ,
70
+ updateGroupScheduleReset ,
71
+ ] ) ;
72
+
73
+ useEffect ( ( ) => {
74
+ if ( updateGroupScheduleIsError || updateGroupMemberIsError ) {
75
+ errorDialogRef . current ?. openModal ( ) ;
76
+ updateGroupMemberReset ( ) ;
77
+ updateGroupScheduleReset ( ) ;
52
78
}
53
- } , [ updateGroupScheduleIsSuccess , updateGroupMemberIsSuccess , navigator ] ) ;
79
+ } , [ updateGroupScheduleIsError , updateGroupMemberIsError , updateGroupMemberReset , updateGroupScheduleReset ] ) ;
54
80
55
81
return {
56
82
mutate,
57
83
isPending : updateGroupScheduleIsPending || updateGroupMemberIsPending ,
58
- isError : updateGroupScheduleIsError || updateGroupMemberIsError ,
84
+ errorDialogRef,
85
+ successDialog,
59
86
} ;
60
87
} ;
0 commit comments