@@ -12,7 +12,7 @@ import useSelectCatPromocao from "@/hooks/useSelectCatPromocao";
1212import { FaHeart } from "react-icons/fa" ;
1313import { useDispatch } from "react-redux" ;
1414import { AppDispatch } from "@/store" ;
15- import { setFavorito } from "@/store/reducers/favorito" ;
15+ import { createFavoriteFetch , deleteFavoriteFetch } from "@/store/reducers/favorito" ;
1616import { useSelector } from "react-redux" ;
1717import { RootState } from "@/types/store" ;
1818interface IProps {
@@ -24,14 +24,23 @@ const CardProduto = ({ card }: IProps) => {
2424 const checkPromocao = useSelectCatPromocao ( ) ;
2525 const dispatch = useDispatch < AppDispatch > ( ) ;
2626 const favorite = useSelector ( ( state : RootState ) => state . favorito ) ;
27+ const { isLogado } = useSelector ( ( state : RootState ) => state . usuario ) ;
2728
28- const handleFavorite = ( id : number ) : boolean => {
29+ const handleFavoriteColor = ( id : number ) : boolean => {
2930 return favorite . some ( ( item ) => item . idProduct === id ) ;
3031 } ;
3132 const openModalProduto = ( ) => {
3233 setModalOpen ( ! modalOpen ) ;
3334 } ;
3435
36+ const handleCheckFavoite = ( idProduct : number ) => {
37+ if ( favorite . some ( ( item ) => item . idProduct === idProduct ) ) {
38+ dispatch ( deleteFavoriteFetch ( idProduct ) ) ;
39+ return ;
40+ }
41+ dispatch ( createFavoriteFetch ( { idProduct : card . id } ) )
42+ }
43+
3544 return (
3645 < ArticleStyle >
3746 < Container >
@@ -63,21 +72,23 @@ const CardProduto = ({ card }: IProps) => {
6372 >
6473 Ver Mais
6574 </ Botao >
66- < Botao
67- classNameBtn = "btnUnset"
68- aria-label = "Botão de favorito"
69- onClick = { ( ) => dispatch ( setFavorito ( { idProduct : card . id } ) ) }
70- type = "button"
71- >
72- < FaHeart
73- size = { 25 }
74- color = {
75- handleFavorite ( card . id )
76- ? thema . colorsPrimary . laranja
77- : thema . colorsPrimary . cinza
78- }
79- />
80- </ Botao >
75+ { isLogado && (
76+ < Botao
77+ classNameBtn = "btnUnset"
78+ aria-label = "Botão de favorito"
79+ onClick = { ( ) => handleCheckFavoite ( card . id ) } // adiciona o id do usuario e id do produto ao estado global
80+ type = "button"
81+ >
82+ < FaHeart
83+ size = { 25 }
84+ color = {
85+ handleFavoriteColor ( card . id )
86+ ? thema . colorsPrimary . laranja
87+ : thema . colorsPrimary . cinza
88+ }
89+ />
90+ </ Botao >
91+ ) }
8192 </ div >
8293 </ Container >
8394 < CheckModal
0 commit comments