From e3cc14f114189d2c65269988b87aecaf88e6e014 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Mon, 22 Dec 2025 11:51:35 +0330 Subject: [PATCH] toggle favorite --- .../[name]/(Main)/[id]/hooks/useFoodData.ts | 10 +---- src/app/[name]/(Main)/[id]/page.tsx | 38 ++++++------------- src/app/[name]/(Main)/[id]/service/Service.ts | 7 +--- 3 files changed, 15 insertions(+), 40 deletions(-) diff --git a/src/app/[name]/(Main)/[id]/hooks/useFoodData.ts b/src/app/[name]/(Main)/[id]/hooks/useFoodData.ts index 9dfa4e3..e0f8820 100644 --- a/src/app/[name]/(Main)/[id]/hooks/useFoodData.ts +++ b/src/app/[name]/(Main)/[id]/hooks/useFoodData.ts @@ -8,14 +8,8 @@ export const useGetFood = (id: string) => { }); }; -export const useAddToFavorite = () => { +export const useToggleFavorite = () => { return useMutation({ - mutationFn: api.addToFavorite, - }); -}; - -export const useRemoveFromFavorite = () => { - return useMutation({ - mutationFn: api.removeFromFavorite, + mutationFn: api.toggleFavorite, }); }; diff --git a/src/app/[name]/(Main)/[id]/page.tsx b/src/app/[name]/(Main)/[id]/page.tsx index 6d07e7b..3355e9f 100644 --- a/src/app/[name]/(Main)/[id]/page.tsx +++ b/src/app/[name]/(Main)/[id]/page.tsx @@ -9,7 +9,7 @@ import { ArrowLeft, Clock, Cup, Heart, TruckTick } from 'iconsax-react' import Image from 'next/image' import { useParams, useRouter } from 'next/navigation' import React, { useEffect, useMemo, useState } from 'react' -import { useAddToFavorite, useGetFood, useRemoveFromFavorite } from './hooks/useFoodData' +import { useGetFood, useToggleFavorite } from './hooks/useFoodData' import { useGetAbout } from '../about/hooks/useAboutData' import { useGetProfile } from '../../(Profile)/profile/hooks/userProfileData' import { toast } from '@/components/Toast' @@ -26,8 +26,7 @@ function FoodPage({ }: Props) { const { data: about } = useGetAbout(); const { items, addToCart, removeFromCart } = useCart(); const [isFavorite, setIsFavorite] = useState(false); - const { mutate: addToFavorite } = useAddToFavorite(); - const { mutate: removeFromFavorite } = useRemoveFromFavorite(); + const { mutate: toggleFavorite } = useToggleFavorite(); const foodId = food?.data?.id || id as string; const quantity = useMemo(() => { @@ -63,29 +62,16 @@ function FoodPage({ }: Props) { const previousFavorite = isFavorite; setIsFavorite(!isFavorite); - if (previousFavorite) { - removeFromFavorite(foodId, { - onSuccess: () => { - // تایید تغییر در صورت موفقیت - }, - onError: () => { - // بازگرداندن به حالت قبلی در صورت خطا - setIsFavorite(previousFavorite); - toast('خطا در حذف از علاقه‌مندی‌ها', 'error'); - }, - }); - } else { - addToFavorite(foodId, { - onSuccess: () => { - // تایید تغییر در صورت موفقیت - }, - onError: () => { - // بازگرداندن به حالت قبلی در صورت خطا - setIsFavorite(previousFavorite); - toast('خطا در افزودن به علاقه‌مندی‌ها', 'error'); - }, - }); - } + toggleFavorite(foodId, { + onSuccess: () => { + // تایید تغییر در صورت موفقیت + }, + onError: () => { + // بازگرداندن به حالت قبلی در صورت خطا + setIsFavorite(previousFavorite); + toast('خطا در تغییر وضعیت علاقه‌مندی', 'error'); + }, + }); }; useEffect(() => { diff --git a/src/app/[name]/(Main)/[id]/service/Service.ts b/src/app/[name]/(Main)/[id]/service/Service.ts index 0197371..3a96514 100644 --- a/src/app/[name]/(Main)/[id]/service/Service.ts +++ b/src/app/[name]/(Main)/[id]/service/Service.ts @@ -6,12 +6,7 @@ export const getFood = async (id: string): Promise => { return data; }; -export const addToFavorite = async (foodId: string) => { +export const toggleFavorite = async (foodId: string) => { const { data } = await api.post(`/public/foods/favorite/${foodId}`); return data; }; - -export const removeFromFavorite = async (foodId: string) => { - const { data } = await api.delete(`/public/foods/favorite/${foodId}`); - return data; -};