@@ -86,7 +98,7 @@ export default function Dropdown({
diff --git a/src/services/pages/detail/postReservation.ts b/src/services/pages/detail/postReservation.ts
index 9702628..1fc4736 100644
--- a/src/services/pages/detail/postReservation.ts
+++ b/src/services/pages/detail/postReservation.ts
@@ -1,19 +1,20 @@
import { IReservation } from '@/src/types/activityType';
import { apiClient } from '../../primitives/apiClient';
+import { CancelMyReservationResponse } from '@/src/types/myReservationType';
export async function createReservation(
activityId: number,
body: IReservation
) {
try {
- const res = await apiClient.post(
+ const res = await apiClient.post(
`/activities/${activityId}/reservations`,
body
);
- if (res.status !== 201) throw new Error(res.data.message);
return res.data;
} catch (err) {
if (err instanceof Error)
console.error('예약에 실패했습니다!', err.message);
+ throw err;
}
}
diff --git a/src/services/pages/myExperiences/api.ts b/src/services/pages/myExperiences/api.ts
index cd7c8d9..3981e6a 100644
--- a/src/services/pages/myExperiences/api.ts
+++ b/src/services/pages/myExperiences/api.ts
@@ -44,3 +44,15 @@ export async function getMyReservationStatus(
throw err;
}
}
+
+// 내 체험 지우기
+export async function deleteMyExperiences(experienceId: number) {
+ try {
+ await apiClient.delete(`/my-activities/${experienceId}`);
+
+ return { ok: true };
+ } catch (err) {
+ if (err instanceof Error)
+ console.error('체험을 지우는데 실패했습니다!', err.message);
+ }
+}
diff --git a/src/services/primitives/queries.ts b/src/services/primitives/queries.ts
index 5f89ad2..50d9e3f 100644
--- a/src/services/primitives/queries.ts
+++ b/src/services/primitives/queries.ts
@@ -2,8 +2,13 @@ import { ActivitiesParams, getActivities } from '@/src/services/pages/main/api';
import { getMyReservationList } from '@/src/services/pages/myReservation/api';
import getUserInfo from '@/src/services/primitives/getUserInfo';
import { ReservationStatus } from '@/src/types/myReservationType';
-import { infiniteQueryOptions, queryOptions } from '@tanstack/react-query';
import {
+ infiniteQueryOptions,
+ mutationOptions,
+ queryOptions,
+} from '@tanstack/react-query';
+import {
+ deleteMyExperiences,
getMyExperiences,
getMyReservationStatus,
} from '../pages/myExperiences/api';
@@ -12,6 +17,9 @@ import {
getReservedSchedule,
getTimeSchedule,
} from '../pages/myReservationStatus/myActivities';
+import { getQueryClient } from '@/src/utils/getQueryClient';
+
+const queryClient = getQueryClient();
export const queries = {
user: () => ['user'],
@@ -39,6 +47,16 @@ export const queries = {
queryKey: [...queries.myExperiences()],
queryFn: () => getMyExperiences(),
}),
+ myExperiencesMutationOptions: () =>
+ mutationOptions({
+ mutationKey: [...queries.myExperiences()],
+ mutationFn: (experienceId: number) =>
+ deleteMyExperiences(experienceId ?? 0),
+ onSuccess: async () =>
+ await queryClient.invalidateQueries({
+ queryKey: [...queries.myExperiences()],
+ }),
+ }),
allActivities: (params: ActivitiesParams) => ['allActivities', params],
allActivitiesOptions: (params: ActivitiesParams) =>
queryOptions({