From 56aa4c0ad27fb3ec79e2cb83b43b84fb502de11f Mon Sep 17 00:00:00 2001 From: Daniel Martinez Date: Sun, 6 Sep 2020 18:20:25 -0500 Subject: [PATCH] Ajuste en hook de modal para usar destructuring --- src/components/Modals/CoinsModal.jsx | 44 ++++++++++++++++++++++++++++ src/components/Modals/index.jsx | 3 +- src/components/Products/Product.jsx | 40 +++++++++++++++---------- src/hooks/useModal.jsx | 5 +--- 4 files changed, 72 insertions(+), 20 deletions(-) create mode 100644 src/components/Modals/CoinsModal.jsx diff --git a/src/components/Modals/CoinsModal.jsx b/src/components/Modals/CoinsModal.jsx new file mode 100644 index 0000000..c253176 --- /dev/null +++ b/src/components/Modals/CoinsModal.jsx @@ -0,0 +1,44 @@ +import React from "react"; +import { createPortal } from "react-dom"; +import "./modal.scss"; +import { success } from "../../assets/index"; + +const CoinsModal = ({ isShowing, hide }) => + isShowing + ? createPortal( + <> +
+
+
+
+ +
+
+ error +
+

SUCCESS!

+ Everything went ok!, enjoy your coins +
+
+
+
+ , + document.body + ) + : null; + +export default CoinsModal; diff --git a/src/components/Modals/index.jsx b/src/components/Modals/index.jsx index 5d3d35a..353f83d 100644 --- a/src/components/Modals/index.jsx +++ b/src/components/Modals/index.jsx @@ -1,5 +1,6 @@ import FailureModal from "./FailureModal"; import SuccessModal from "./SuccessModal"; +import CoinsModal from "./CoinsModal"; import "./modal.scss"; -export { FailureModal, SuccessModal }; +export { FailureModal, SuccessModal, CoinsModal }; diff --git a/src/components/Products/Product.jsx b/src/components/Products/Product.jsx index 5bacd40..e59eec7 100644 --- a/src/components/Products/Product.jsx +++ b/src/components/Products/Product.jsx @@ -1,9 +1,10 @@ -import React, { useContext, useEffect, useState } from "react"; +import React, { useContext, useEffect } from "react"; import { UserContext } from "../../providers/index"; import { coin, buy } from "../../assets/index"; -import { SuccessModal, FailureModal } from "../Modals/index"; +import { SuccessModal, FailureModal, CoinsModal } from "../Modals/index"; import { useModal } from "../../hooks/index"; import { redeemProduct } from "../../services/productsService"; + import "./products.scss"; const Product = ({ @@ -21,31 +22,40 @@ const Product = ({ if (!user) return; }, [user]); - const [error, setError] = useState(false); + const [errorModal, toggleErrorModal] = useModal(); + + const [successModal, toggleSuccessModal] = useModal(); - const { isShowing, toggle } = useModal(); + const [coinsModal, toggleCoinsModal] = useModal(); const { points } = user; - const canBuy = cost <= points; + const canBuy = cost >= points; - const showModal = () => { + const showResponseModal = () => { redeemProduct(_id) .then((res) => { - toggle(); + toggleSuccessModal(); }) .catch((err) => { - setError(true); - toggle(); + toggleErrorModal(); }); }; + const showCoinsModal = () => { + toggleCoinsModal(); + }; + return (
- {error ? ( - - ) : ( - + {coinsModal && ( + + )} + {errorModal && ( + + )} + {successModal && ( + )}
@@ -62,7 +72,7 @@ const Product = ({

{cost}

coin - +
@@ -79,7 +89,7 @@ const Product = ({

{cost - (points | 0)}

coin - +
diff --git a/src/hooks/useModal.jsx b/src/hooks/useModal.jsx index 907a239..c4c190e 100644 --- a/src/hooks/useModal.jsx +++ b/src/hooks/useModal.jsx @@ -7,10 +7,7 @@ const useModal = () => { setIsShowing(!isShowing); } - return { - isShowing, - toggle, - }; + return [isShowing, toggle]; }; export default useModal;