import { use, useEffect, useState } from "react"; import { AuthContext } from "../../context/AuthContext"; import { useNavigate } from "react-router-dom"; import { EngagementFavoriteRecipe } from "../../services/EngagementService"; import { isApiError } from "../../types/api/error"; interface FavoriteButtonProps { favorite: boolean | undefined; id: number | undefined; } export default function FavoriteButton({ favorite, id }: FavoriteButtonProps) { // CONTEXT const { isLoggedIn } = use(AuthContext); const navigate = useNavigate(); const [_favorite, setFavorite] = useState(); const clickHandler = async () => { // This button cannot be used if not logged in if (!isLoggedIn) { await navigate("/v2/web/login"); return; } if (!id) return; // Toggle button first, to feel fast setFavorite(!_favorite); const result = await EngagementFavoriteRecipe(id); if (isApiError(result)) { console.error(result.message); } } useEffect(() => { if (favorite) setFavorite(favorite); }, [favorite]); return _favorite ? ( ) : ( ); }