/
pasha.json
/
react_pro_final_project_base
Обзор
Документация
Войти
/
pasha.json
/
react_pro_final_project_base
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
finalTask
src/features/like/useLike.ts
32 строки
1 KB
Pavel Nikolaev
tasks 1-5
19 ноя 2025, 17:07
19 ноя 2025, 17:07
804edd8
Код
Авторство
О чём код?
import { useAppSelector } from '../../shared/store/utils'; import { userSelectors } from '../../shared/store/slices/user'; import { useSetLikeProductMutation, useDeleteLikeProductMutation } from '../../shared/store/api/productsApi'; import { toast } from 'react-toastify'; export const useLike = (product: Product) => { const accessToken = useAppSelector(userSelectors.getAccessToken); const user = useAppSelector(userSelectors.getUser); const [setLike] = useSetLikeProductMutation(); const [deleteLike] = useDeleteLikeProductMutation(); const isLiked = product?.likes?.some((l) => l.userId === user?.id); const toggleLike = async () => { if (!accessToken) { toast.warning('Вы не авторизованы'); return; } const response = isLiked ? await deleteLike({ id: `${product.id}` }) : await setLike({ id: `${product.id}` }); if (response.error) { const error = response.error as any; toast.error(error.data.message); } }; return { isLiked, toggleLike }; };