From 9adc7eaf1abc0a499c57c9c718d7e4317086fdba Mon Sep 17 00:00:00 2001 From: Ebube Date: Tue, 13 Jun 2023 09:01:02 +0100 Subject: [PATCH 1/2] added redeem api --- src/components/MyCoupons/CouponPopup.jsx | 50 +++++++++++++++++++++--- src/services/UsersService.js | 6 +-- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/components/MyCoupons/CouponPopup.jsx b/src/components/MyCoupons/CouponPopup.jsx index e247a68..f76c407 100644 --- a/src/components/MyCoupons/CouponPopup.jsx +++ b/src/components/MyCoupons/CouponPopup.jsx @@ -1,6 +1,41 @@ - +import { useMemo, useState } from "react"; +import { toast } from "react-toastify"; +import usersService from "../../services/UsersService"; const CouponPopup = ({ popUpHandler, data }) => { + const [loader, setLoader] = useState(false); + const apiCall = useMemo(() => new usersService(), []); + + const redeemCouponHandler = async () => { + setLoader(true); + + try { + const { code, coupon_id } = data; + const reqData = { code_id: Number(coupon_id), code }; + + const res = await apiCall.getCouponRedeem(reqData); + if(res.statusText === "OK") { + toast.success("Great news! Your coupon has been redeemed.", { + autoClose: 3000, + hideProgressBar: true, + }); + } + + popUpHandler(); + setLoader(false); + throw new Response(res); + } catch (error) { + error && + toast.warn("An error occurred while processing your coupon.", { + autoClose: 3000, + hideProgressBar: true, + }); + setLoader(false); + console.log(error) + // throw new Error(error); + } + }; + return (
@@ -45,14 +80,17 @@ const CouponPopup = ({ popUpHandler, data }) => {
diff --git a/src/services/UsersService.js b/src/services/UsersService.js index c7a5d74..948a2ae 100644 --- a/src/services/UsersService.js +++ b/src/services/UsersService.js @@ -455,13 +455,13 @@ class usersService { return this.postAuxEnd("/stepresetpass", reqData); } - getCouponRedeem() { + getCouponRedeem(reqData) { var postData = { uuid: localStorage.getItem("uid"), member_id: localStorage.getItem("member_id"), sessionid: localStorage.getItem("session_token"), - page: 0, - limit: 100, + action: 85020, + ...reqData }; return this.postAuxEnd("/couponredeem", postData); } From 9a2fd54bd52f1004e0be2e55d87114fbf882975e Mon Sep 17 00:00:00 2001 From: Ebube Date: Tue, 13 Jun 2023 20:49:29 +0100 Subject: [PATCH 2/2] added the redeem coupon api --- src/components/MyActiveJobs/ActiveJobs.jsx | 2 +- src/components/MyCoupons/CouponPopup.jsx | 27 +-- .../MyPendingJobs/MyPendingJobTable.jsx | 158 +++++++++--------- src/components/MyTasks/MyJobTable.jsx | 1 + src/views/MyPendingJobsPage.jsx | 50 +++--- 5 files changed, 120 insertions(+), 118 deletions(-) diff --git a/src/components/MyActiveJobs/ActiveJobs.jsx b/src/components/MyActiveJobs/ActiveJobs.jsx index 867462b..f06110e 100644 --- a/src/components/MyActiveJobs/ActiveJobs.jsx +++ b/src/components/MyActiveJobs/ActiveJobs.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState, useRef, forwardRef } from "react"; +import React, { useEffect, useState, useRef } from "react"; import { useSelector } from "react-redux"; import Layout from "../Partials/Layout"; import { useNavigate } from "react-router-dom"; diff --git a/src/components/MyCoupons/CouponPopup.jsx b/src/components/MyCoupons/CouponPopup.jsx index f76c407..4c34f50 100644 --- a/src/components/MyCoupons/CouponPopup.jsx +++ b/src/components/MyCoupons/CouponPopup.jsx @@ -8,30 +8,33 @@ const CouponPopup = ({ popUpHandler, data }) => { const redeemCouponHandler = async () => { setLoader(true); - + try { const { code, coupon_id } = data; const reqData = { code_id: Number(coupon_id), code }; const res = await apiCall.getCouponRedeem(reqData); - if(res.statusText === "OK") { + if (res.statusText === "OK") { toast.success("Great news! Your coupon has been redeemed.", { autoClose: 3000, hideProgressBar: true, }); } - - popUpHandler(); - setLoader(false); + + setTimeout(() => { + popUpHandler(); + setLoader(false); + }, 3000); throw new Response(res); } catch (error) { - error && - toast.warn("An error occurred while processing your coupon.", { - autoClose: 3000, - hideProgressBar: true, - }); + // error && + // toast.warn("An error occurred while processing your coupon.", { + // autoClose: 3000, + // hideProgressBar: true, + // }); setLoader(false); - console.log(error) + console.log(error); + return; // throw new Error(error); } }; @@ -82,7 +85,7 @@ const CouponPopup = ({ popUpHandler, data }) => {
+ )} + + {/* Active Job Popout */} + {jobPopout.show && ( + { + setJobPopout({ show: false, data: {} }); + }} + situation={jobPopout.show} + /> + )} + {/* End of Active Job Popout */} +
); } diff --git a/src/components/MyTasks/MyJobTable.jsx b/src/components/MyTasks/MyJobTable.jsx index a7c7ed6..604c47e 100644 --- a/src/components/MyTasks/MyJobTable.jsx +++ b/src/components/MyTasks/MyJobTable.jsx @@ -85,6 +85,7 @@ export default function MyJobTable({ className, ActiveJobList }) { {Number(task?.price) * 0.01} + Duration: diff --git a/src/views/MyPendingJobsPage.jsx b/src/views/MyPendingJobsPage.jsx index 5c1458a..9830f34 100644 --- a/src/views/MyPendingJobsPage.jsx +++ b/src/views/MyPendingJobsPage.jsx @@ -1,34 +1,32 @@ -import React, { useContext,useState, useEffect } from "react"; +import React, { useContext, useState, useEffect } from "react"; import usersService from "../services/UsersService"; -//import MyJobs from "../components/MyJobs"; -import MyActiveJobs from "../components/MyActiveJobs"; import MyPendingJobs from "../components/MyPendingJobs"; import { useSelector } from "react-redux"; export default function MyPendingJobsPage() { - let {commonHeadBanner} = useSelector(state => state.commonHeadBanner) - const [MyJobList, setMyJobList] = useState([]); - const api = new usersService(); + let { commonHeadBanner } = useSelector((state) => state.commonHeadBanner); + const [MyJobList, setMyJobList] = useState([]); + const api = new usersService(); - const getMyJobList = async () => { - try { - const res = await api.getMyPendingJobList(); - setMyJobList(res.data); - } catch (error) { - console.log("Error getting mode"); - } - }; - useEffect(() => { - getMyJobList(); - }, []); + const getMyJobList = async () => { + try { + const res = await api.getMyPendingJobList(); + setMyJobList(res.data); + } catch (error) { + console.log("Error getting mode"); + } + }; + useEffect(() => { + getMyJobList(); + }, []); - // debugger; - return ( - <> - - - ); + // debugger; + return ( + <> + + + ); }