diff --git a/apps/what-today/src/components/reservations-status/ReservationSheet.tsx b/apps/what-today/src/components/reservations-status/ReservationSheet.tsx index 3cfc4760..19a8289a 100644 --- a/apps/what-today/src/components/reservations-status/ReservationSheet.tsx +++ b/apps/what-today/src/components/reservations-status/ReservationSheet.tsx @@ -1,5 +1,5 @@ import { useQueryClient } from '@tanstack/react-query'; -import { type ManageableReservationStatus, Select } from '@what-today/design-system'; +import { type ManageableReservationStatus, Select, useToast } from '@what-today/design-system'; import dayjs from 'dayjs'; import { type ReactNode, useEffect, useState } from 'react'; import { twMerge } from 'tailwind-merge'; @@ -22,6 +22,7 @@ const tabData: { key: ManageableReservationStatus; label: string }[] = [ ]; export default function ReservationSheet({ activityId, selectedDate }: ReservationSheetProps) { + const { toast } = useToast(); // 상태 분리 const [selectedSchedule, setSelectedSchedule] = useState<{ value: string; label: ReactNode } | null>(null); const [selectedScheduleId, setSelectedScheduleId] = useState(null); @@ -62,8 +63,21 @@ export default function ReservationSheet({ activityId, selectedDate }: Reservati await patchReservationStatus(activityId, id, 'confirmed'); await queryClient.invalidateQueries({ queryKey: ['reservation'] }); await queryClient.invalidateQueries({ queryKey: ['dailySchedule'] }); - } catch (error) { - console.error('Error in handleApprove:', error); + await queryClient.invalidateQueries({ + queryKey: ['monthlySchedule', activityId, selectedDate.slice(0, 4), selectedDate.slice(5, 7)], + }); + toast({ + title: '예약 승인 성공', + description: '정상적으로 처리되었습니다.', + type: 'success', + }); + } catch (err) { + const errorMessage = err instanceof Error ? err.message : '승인 중 오류가 발생했습니다.'; + toast({ + title: '예약 승인 실패', + description: errorMessage, + type: 'error', + }); } }; @@ -72,8 +86,21 @@ export default function ReservationSheet({ activityId, selectedDate }: Reservati await patchReservationStatus(activityId, id, 'declined'); await queryClient.invalidateQueries({ queryKey: ['reservation'] }); await queryClient.invalidateQueries({ queryKey: ['dailySchedule'] }); - } catch (error) { - console.error('Error in handleReject:', error); + await queryClient.invalidateQueries({ + queryKey: ['monthlySchedule', activityId, selectedDate.slice(0, 4), selectedDate.slice(5, 7)], + }); + toast({ + title: '예약 거절 성공', + description: '정상적으로 처리되었습니다.', + type: 'success', + }); + } catch (err) { + const errorMessage = err instanceof Error ? err.message : '거절 중 오류가 발생했습니다.'; + toast({ + title: '예약 거절 실패', + description: errorMessage, + type: 'error', + }); } }; diff --git a/apps/what-today/src/pages/mypage/manage-activities/index.tsx b/apps/what-today/src/pages/mypage/manage-activities/index.tsx index 5c8fdd25..9363ebd9 100644 --- a/apps/what-today/src/pages/mypage/manage-activities/index.tsx +++ b/apps/what-today/src/pages/mypage/manage-activities/index.tsx @@ -5,6 +5,7 @@ import { ExperienceCardSkeleton, Modal, NoResult, + useToast, WarningLogo, } from '@what-today/design-system'; import { useEffect, useRef, useState } from 'react'; @@ -15,6 +16,7 @@ import { useInfiniteMyActivitiesQuery } from '@/hooks/myActivity/useMyActivities export default function ManageActivitiesPage() { const navigate = useNavigate(); + const { toast } = useToast(); const [isDeleteOpen, setIsDeleteOpen] = useState(false); const [deleteTargetId, setDeleteTargetId] = useState(null); @@ -27,10 +29,24 @@ export default function ManageActivitiesPage() { onSuccess: () => { setIsDeleteOpen(false); setDeleteTargetId(null); + toast({ + title: '체험 삭제 성공', + description: '체험이 삭제되었습니다.', + type: 'success', + }); + }, + onError: (err) => { + const errorMessage = err instanceof Error ? err.message : '삭제 중 오류가 발생했습니다.'; + toast({ + title: '체험 삭제 실패', + description: errorMessage, + type: 'error', + }); }, }); } }; + const observerRef = useRef(null); useEffect(() => { if (!observerRef.current || !hasNextPage) return; diff --git a/apps/what-today/src/pages/mypage/reservations-status/index.tsx b/apps/what-today/src/pages/mypage/reservations-status/index.tsx index 1a3ef0e3..d5facde4 100644 --- a/apps/what-today/src/pages/mypage/reservations-status/index.tsx +++ b/apps/what-today/src/pages/mypage/reservations-status/index.tsx @@ -42,12 +42,6 @@ export default function ReservationsStatusPage() { setSelectedActivityId(Number(value.value)); }; - // const handleMonthChange = (year: string, month: string) => { - // if (calendarYear === year && calendarMonth === month) return; - // setCalendarYear(year); - // setCalendarMonth(month); - // }; - const reservationMap = monthlyReservations.reduce>>( (acc, cur) => { acc[cur.date] = cur.reservations;