|
1 | 1 | import { useMutation, useQuery } from '@tanstack/react-query'; |
2 | | -import { sendEmail, editEmail, readEmail } from '../api/mail'; |
| 2 | +import { sendEmail, editEmail, readEmail, deleteEmail } from '../api/mail'; |
3 | 3 | import { EmailRequest, EmailResponse, ReadEmailResponse } from '../model/emailInformation'; |
| 4 | +import { useNavigate, useParams } from 'react-router-dom'; |
| 5 | +import { useEmailStore } from '../model/EmailStore'; |
| 6 | + |
| 7 | +export const useReadEmail = (eventId: number, status: 'PENDING' | 'SENT') => { |
| 8 | + return useQuery<ReadEmailResponse[]>({ |
| 9 | + queryKey: ['emails', eventId, status], |
| 10 | + queryFn: () => readEmail(eventId, status), |
| 11 | + enabled: !!eventId && !!status, |
| 12 | + }); |
| 13 | +} |
4 | 14 |
|
5 | 15 | export const useSendEmail = () => { |
| 16 | + const { id } = useParams(); |
| 17 | + const navigate = useNavigate(); |
| 18 | + const { reset } = useEmailStore(); |
6 | 19 | return useMutation<EmailResponse, Error, EmailRequest>({ |
7 | 20 | mutationFn: sendEmail, |
| 21 | + onSuccess: () => { |
| 22 | + reset(); |
| 23 | + alert("예약 메일이 성공적으로 발송되었습니다!"); |
| 24 | + navigate(`/dashboard/${id}/mailBox`); |
| 25 | + }, |
| 26 | + onError: () => { |
| 27 | + alert("메일 전송에 실패했습니다. 다시 시도해 주세요."); |
| 28 | + }, |
8 | 29 | }); |
9 | 30 | }; |
10 | 31 |
|
11 | 32 | export const useEditEmail = () => { |
| 33 | + const { id } = useParams(); |
| 34 | + const navigate = useNavigate(); |
| 35 | + const { reset } = useEmailStore(); |
12 | 36 | return useMutation<EmailResponse, Error, { reservationEmailId: number; data: EmailRequest }>({ |
13 | 37 | mutationFn: ({ reservationEmailId, data }) => editEmail(reservationEmailId, data), |
| 38 | + onSuccess: () => { |
| 39 | + reset(); |
| 40 | + alert("예약 메일이 성공적으로 수정되었습니다!"); |
| 41 | + navigate(`/dashboard/${id}/mailBox`); |
| 42 | + }, |
| 43 | + onError: () => { |
| 44 | + alert("메일 수정에 실패했습니다. 다시 시도해 주세요."); |
| 45 | + }, |
14 | 46 | }); |
15 | 47 | }; |
16 | 48 |
|
17 | | -export const useReadEmail = (eventId: number, status: 'PENDING' | 'SENT') => { |
18 | | - return useQuery<ReadEmailResponse[]>({ |
19 | | - queryKey: ['emails', eventId, status], |
20 | | - queryFn: () => readEmail(eventId, status), |
21 | | - enabled: !!eventId && !!status, |
22 | | - }); |
| 49 | +export const useDeleteEmail = () => { |
| 50 | + return useMutation<EmailResponse, Error, number>({ |
| 51 | + mutationFn: (reservationEmailId) => deleteEmail(reservationEmailId), |
| 52 | + onSuccess: () => { |
| 53 | + alert("메일이 삭제되었습니다."); |
| 54 | + window.location.reload(); |
| 55 | + }, |
| 56 | + onError: () => { |
| 57 | + alert("메일 삭제에 실패했습니다. 다시 시도해 주세요."); |
| 58 | + } |
| 59 | + }); |
23 | 60 | } |
0 commit comments