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(
+ <>
+
+
+
+
+
+
+
+

+
+
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}

-
+
>
@@ -79,7 +89,7 @@ const Product = ({
{cost - (points | 0)}

-
+
>
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;