Compare commits

...

36 Commits

Author SHA1 Message Date
victorAnumudu b96e8a3ed5 Merged master into amount-alignment 2023-07-31 14:23:57 +01:00
victorAnumudu f3226a6cfc amount alignment changed 2023-07-31 14:22:55 +01:00
ameye ff4c503100 Merge branch 'tx_ref-change' of WrenchBoard/Users-Wrench into master 2023-07-31 12:04:22 +00:00
Ebube f543a2d893 testing topupResult 2023-07-31 13:02:31 +01:00
ameye 41badd52be Merge branch 'list-alignment-fix' of WrenchBoard/Users-Wrench into master 2023-07-30 16:29:28 +00:00
victorAnumudu eeddd4e0a5 list alignment fixed 2023-07-30 06:10:44 +01:00
tokslaw ee4d136834 wrenchboard-logo-text + image added 2023-07-29 19:04:08 -04:00
tokslaw 283efa42b3 social comment added 2023-07-29 12:16:57 -04:00
tokslaw 5cbab4933c Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/Users-Wrench 2023-07-29 12:13:14 -04:00
ameye 4de2181c18 Merge branch 'family-login-no-captcha' of WrenchBoard/Users-Wrench into master 2023-07-29 15:45:31 +00:00
ameye c8f0161a29 Merge branch 'tx_ref-change' of WrenchBoard/Users-Wrench into master 2023-07-29 15:45:26 +00:00
tokslaw 60222b6d88 text error correction 2023-07-29 11:11:23 -04:00
victorAnumudu 9ea3963239 family login captcha removed 2023-07-29 12:25:25 +01:00
Ebube a87592623b Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/Users-Wrench into tx_ref-change 2023-07-29 07:01:22 +01:00
Ebube bfcf53f763 Not selected should appear not selected 2023-07-29 07:00:50 +01:00
CHIEFSOFT\ameye df4489c6f2 removed start top up 2023-07-29 00:09:59 -04:00
CHIEFSOFT\ameye 37185812b4 Result added 2023-07-28 16:55:45 -04:00
ameye eb3e78244d Merge branch 'tx_ref-change' of WrenchBoard/Users-Wrench into master 2023-07-28 13:25:00 +00:00
Ebube b302d7ba57 Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/Users-Wrench into tx_ref-change 2023-07-28 14:22:18 +01:00
ameye d6c16169d9 Merge branch 'Family-Tabs-Size-Fix' of WrenchBoard/Users-Wrench into master 2023-07-28 13:18:31 +00:00
Ebube 57129da0bd changed tx_ref number 2023-07-28 13:58:10 +01:00
Ebube 9eaf7123d4 reverse 2023-07-28 13:56:23 +01:00
Ebube 096da29149 Changed tx_ref no 2023-07-28 13:51:48 +01:00
CHIEFSOFT\ameye c8331c51cf removed debugger 2023-07-28 08:20:04 -04:00
tokslaw 3b7618702b env text-spell error 2023-07-27 17:04:57 -04:00
Ebube 84968b4435 balance refresh bug for withdraw 2023-07-27 16:28:21 +01:00
Ebube 98f11a3d80 Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/Users-Wrench into Family-Tabs-Size-Fix 2023-07-27 16:18:29 +01:00
CHIEFSOFT\ameye 98d734e869 Post data 2023-07-27 11:17:15 -04:00
Ebube 47004fec8c Merge branch 'master' of https://gitlab.chiefsoft.net/WrenchBoard/Users-Wrench into Family-Tabs-Size-Fix 2023-07-27 16:05:17 +01:00
CHIEFSOFT\ameye 48ce89489e console log 2023-07-27 11:04:01 -04:00
CHIEFSOFT\ameye 1ce05a3be3 add fund page 2023-07-27 11:01:22 -04:00
Ebube 28ab1116e9 Added Credit Limit & Pending Jobs Bug & removed reload for credit 2023-07-27 11:34:27 +01:00
ameye 994060d929 Merge branch 'Family-Tabs-Size-Fix' of WrenchBoard/Users-Wrench into master 2023-07-26 15:57:24 +00:00
Ebube a5c62564b7 Fixed tasks banner breaking 2023-07-26 16:54:31 +01:00
Ebube 22e61d2b41 Enforced send limit 2023-07-26 15:49:04 +01:00
ameye 6ab5eae0c0 Merge branch 'email-input-size' of WrenchBoard/Users-Wrench into master 2023-07-26 14:26:05 +00:00
25 changed files with 147 additions and 95 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ REACT_APP_GOOGLE_REDIRECT_URL=http://localhost:9082/login/auth/
REACT_APP_FACEBOOK_CLIENT_ID2=390204307987009 REACT_APP_FACEBOOK_CLIENT_ID2=390204307987009
REACT_APP_FACEBOOK_CLIENT_SECRET2=19f778e312f2ab96d147bacb612910c2 REACT_APP_FACEBOOK_CLIENT_SECRET2=19f778e312f2ab96d147bacb612910c2
#developenet Account #development Account Social
REACT_APP_FACEBOOK_CLIENT_ID=677857427521030 REACT_APP_FACEBOOK_CLIENT_ID=677857427521030
REACT_APP_FACEBOOK_CLIENT_SECRET=4801375f22072d8a75f64483fdd89829 REACT_APP_FACEBOOK_CLIENT_SECRET=4801375f22072d8a75f64483fdd89829
+2
View File
@@ -56,6 +56,8 @@ export default function Routers() {
<Routes> <Routes>
{/* guest routes */} {/* guest routes */}
<Route exact path="/login" element={<LoginPage />} /> <Route exact path="/login" element={<LoginPage />} />
<Route exact path="/eoffer" element={<LoginPage />} />
<Route exact path="/signup" element={<SignupPage />} /> <Route exact path="/signup" element={<SignupPage />} />
<Route exact path="/login/auth" element={<AuthRedirect />} /> <Route exact path="/login/auth" element={<AuthRedirect />} />
<Route exact path="/login/auth/flogin" element={<FacebookRedirect />} /> <Route exact path="/login/auth/flogin" element={<FacebookRedirect />} />
Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

@@ -1,6 +1,6 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Link, useNavigate } from "react-router-dom"; import { Link, useNavigate } from "react-router-dom";
import WrenchBoard from "../../../assets/images/wrenchboard.png"; import WrenchBoard from "../../../assets/images/wrenchboard-logo-text.png";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
import AuthLayout from "../AuthLayout"; import AuthLayout from "../AuthLayout";
+3 -1
View File
@@ -4,7 +4,7 @@ import linkedInLogo from "../../../assets/images/Linkedin.png";
import appleLogo from "../../../assets/images/apple-black.svg"; import appleLogo from "../../../assets/images/apple-black.svg";
import facebookLogo from "../../../assets/images/facebook-4.svg"; import facebookLogo from "../../../assets/images/facebook-4.svg";
import googleLogo from "../../../assets/images/google-logo.svg"; import googleLogo from "../../../assets/images/google-logo.svg";
import WrenchBoard from "../../../assets/images/wrenchboard.png"; import WrenchBoard from "../../../assets/images/wrenchboard-logo-text.png";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
import AuthLayout from "../AuthLayout"; import AuthLayout from "../AuthLayout";
@@ -432,10 +432,12 @@ export default function Login() {
} }
{/* END of login component */} {/* END of login component */}
{loginType == "full" &&
<div className="pt-5 text-[#181c32] text-center font-semibold text-[13.975px] leading-[20.9625px]"> <div className="pt-5 text-[#181c32] text-center font-semibold text-[13.975px] leading-[20.9625px]">
This site is protected by hCaptcha and the our Privacy Policy This site is protected by hCaptcha and the our Privacy Policy
and Terms of Service apply. and Terms of Service apply.
</div> </div>
}
</div> </div>
</div> </div>
</div> </div>
+53 -9
View File
@@ -1,7 +1,6 @@
import React, { useCallback, useEffect, useState } from "react"; import React, { useCallback, useEffect, useState } from "react";
import { Link, useNavigate } from "react-router-dom"; import { Link, useNavigate } from "react-router-dom";
import facebookLogo from "../../../assets/images/facebook-4.svg"; import WrenchBoard from "../../../assets/images/wrenchboard-logo-text.png";
import WrenchBoard from "../../../assets/images/wrenchboard.png";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
import AuthLayout from "../AuthLayout"; import AuthLayout from "../AuthLayout";
@@ -69,13 +68,17 @@ export default function SignUp() {
let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/; let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/;
if (regEx.test(email) == false) { if (regEx.test(email) == false) {
setMsgError("Invalid Email"); setMsgError("Invalid Email");
return setTimeout(()=>{setMsgError("");},3000) return setTimeout(() => {
setMsgError("");
}, 3000);
} }
//checks if terms and condition is checked //checks if terms and condition is checked
if (!checked) { if (!checked) {
setMsgError("Terms and condition required"); setMsgError("Terms and condition required");
return setTimeout(()=>{setMsgError("");},3000) return setTimeout(() => {
setMsgError("");
}, 3000);
} }
setSignUpLoading(true); setSignUpLoading(true);
@@ -95,7 +98,9 @@ export default function SignUp() {
if (res.status === 200) { if (res.status === 200) {
const { data } = res; const { data } = res;
if (data && data.acc === "DULPICATE") { if (data && data.acc === "DULPICATE") {
setMsgError("Unable to use this username. Please try another username."); setMsgError(
"Unable to use this username. Please try another username."
);
setSignUpLoading(false); setSignUpLoading(false);
} }
if (data && data.status === "1") { if (data && data.status === "1") {
@@ -211,9 +216,7 @@ export default function SignUp() {
name="password" name="password"
type={showPassword ? "text" : "password"} type={showPassword ? "text" : "password"}
onClick={togglePasswordVisibility} onClick={togglePasswordVisibility}
passIcon={ passIcon={showPassword ? "show-password" : "hide-password"}
showPassword ? "show-password" : "hide-password"
}
value={formData.password} value={formData.password}
inputHandler={handleInputChange} inputHandler={handleInputChange}
/> />
@@ -223,7 +226,48 @@ export default function SignUp() {
{msgError} {msgError}
</div> </div>
)} )}
<div className="forgot-password-area flex justify-between items-center mb-6"> <div className="forgot-password-area flex justify-between items-center mb-6">
<div className="remember-checkbox flex items-center space-x-2.5 group cursor-pointer">
<button
onClick={rememberMe}
type="button"
className={`w-6 h-6 border-[#4687ba] text-white flex justify-center items-center border rounded-[.45em] group-checked:text-white transition-all duration-200 group-checked:cursor-default ${
checked && "text-white bg-[#4687ba]"
}`}
>
{checked && (
<svg
xmlns="http://www.w3.org/2000/svg"
className="h-5 w-5"
viewBox="0 0 20 20"
fill="currentColor"
>
<path
fillRule="evenodd"
d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"
clipRule="evenodd"
/>
</svg>
)}
</button>
<span
onClick={rememberMe}
className="cursor-default text-dark-gray dark:text-white text-[15px] group-checked:text-white transition-all duration-200 group-checked:cursor-default"
>
I agree with all
<Link
href="#"
className="text-base text-[#4687ba] hover:text-[#009ef7] mx-1 inline-block"
>
terms and condition
</Link>
</span>
</div>
</div>
{/* Forgot Password */}
{/* <div className="forgot-password-area flex justify-between items-center mb-6">
<div className="remember-checkbox flex items-center space-x-2.5"> <div className="remember-checkbox flex items-center space-x-2.5">
<button <button
onClick={rememberMe} onClick={rememberMe}
@@ -258,7 +302,7 @@ export default function SignUp() {
</Link> </Link>
</span> </span>
</div> </div>
</div> </div> */}
<div className="signin-area mb-1"> <div className="signin-area mb-1">
<div className="flex justify-center"> <div className="flex justify-center">
<button <button
@@ -1,6 +1,6 @@
import { useCallback, useEffect, useState } from "react"; import { useCallback, useEffect, useState } from "react";
import { Link, useLocation, useNavigate } from "react-router-dom"; import { Link, useLocation, useNavigate } from "react-router-dom";
import WrenchBoard from "../../../assets/images/wrenchboard.png"; import WrenchBoard from "../../../assets/images/wrenchboard-logo-text.png";
import debounce from "../../../hooks/debounce"; import debounce from "../../../hooks/debounce";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
@@ -1,6 +1,6 @@
import { useState } from "react"; import { useState } from "react";
import { Link, useLocation, useNavigate } from "react-router-dom"; import { Link, useLocation, useNavigate } from "react-router-dom";
import WrenchBoard from "../../../assets/images/wrenchboard.png"; import WrenchBoard from "../../../assets/images/wrenchboard-logo-text.png";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
import AuthLayout from "../AuthLayout"; import AuthLayout from "../AuthLayout";
+1 -1
View File
@@ -1,6 +1,6 @@
import { useNavigate, Link } from "react-router-dom"; import { useNavigate, Link } from "react-router-dom";
import AuthLayout from "../AuthLayout"; import AuthLayout from "../AuthLayout";
import WrenchBoard from "../../../assets/images/wrenchboard.png"; import WrenchBoard from "../../../assets/images/wrenchboard-logo-text.png";
export default function VerifyYou() { export default function VerifyYou() {
const navigate = useNavigate(); const navigate = useNavigate();
+1 -1
View File
@@ -19,7 +19,7 @@ export default function OfferCard({ datas, hidden = false, setOfferPopout }) {
className="thumbnail w-full h-full rounded-xl overflow-hidden px-4 pt-4" className="thumbnail w-full h-full rounded-xl overflow-hidden px-4 pt-4"
style={{ style={{
background: `url(${localImgLoad( background: `url(${localImgLoad(
`images/taskbanners/${datas.banner}` `images/taskbanners/${datas?.banner || "default.jpg"}`
)}) center / contain no-repeat`, )}) center / contain no-repeat`,
}} }}
> >
+4 -4
View File
@@ -110,7 +110,7 @@ export default function MyJobTable({ MyJobList, reloadJobList, className }) {
return ( return (
<tr <tr
key={index} key={index}
className="bg-white dark:bg-dark-white border-b dark:border-[#5356fb29] hover:bg-gray-50" className="bg-white dark:bg-dark-white border-b dark:border-[#5356fb29] hover:bg-gray-50"
> >
<td className="py-9"> <td className="py-9">
<div className="sm:flex sm:space-x-2 sm:justify-between sm:items-center job-items"> <div className="sm:flex sm:space-x-2 sm:justify-between sm:items-center job-items">
@@ -175,7 +175,7 @@ export default function MyJobTable({ MyJobList, reloadJobList, className }) {
}} }}
className="w-20 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white" className="w-20 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white"
> >
Manage Assign
</button> </button>
</td> </td>
</tr> </tr>
@@ -204,8 +204,8 @@ export default function MyJobTable({ MyJobList, reloadJobList, className }) {
{MyJobList.loading ? ( {MyJobList.loading ? (
<LoadingSpinner size="16" color="sky-blue" /> <LoadingSpinner size="16" color="sky-blue" />
) : ( ) : (
<div className="relative w-full overflow-x-auto sm:rounded-lg flex flex-col justify-between h-full"> <div className="relative w-full overflow-x-auto sm:rounded-lg flex flex-col justify-between min-h-[520px]">
<table className="table-auto min-w-full text-sm text-left text-gray-500 dark:text-gray-400 min-h-[500px]"> <table className="table-auto min-w-full text-sm text-left text-gray-500 dark:text-gray-400">
<tbody> <tbody>
<> <>
{MyJobList && {MyJobList &&
@@ -58,7 +58,7 @@ export default function MyPendingJobTable({ MyJobList, className }) {
<div className="flex space-x-2 items-center w-full"> <div className="flex space-x-2 items-center w-full">
<div className="w-[60px] h-[60px] p-2 bg-alice-blue rounded-full overflow-hidden flex justify-center items-center"> <div className="w-[60px] h-[60px] p-2 bg-alice-blue rounded-full overflow-hidden flex justify-center items-center">
<img <img
src={localImgLoad(`images/taskbanners/${value.banner}`)} src={localImgLoad(`images/taskbanners/${value.banner || "default.jpg"}`)}
alt="data" alt="data"
className="w-full h-full rounded-full" className="w-full h-full rounded-full"
/> />
+1 -1
View File
@@ -9,7 +9,7 @@ export default function MyPendingJobs(props) {
const filterHandler = (value) => { const filterHandler = (value) => {
setValue(value); setValue(value);
}; };
console.log("AMEYE LOC1", props.MyJobList); // console.log("AMEYE LOC1", props.MyJobList);
return ( return (
<Layout> <Layout>
<CommonHead <CommonHead
@@ -136,6 +136,12 @@ function AddFundDollars(props) {
return; return;
} }
if (Number(props.input) * 100 > Number(props.walletItem?.transfer_limit)) {
props.setInputError("Credit limit has been exceeded");
setTimeout(() => props.setInputError(""), 5000);
return;
}
if (tab === "previous") { if (tab === "previous") {
// To check if card is empty // To check if card is empty
if (Object.keys(prevCardDetails).length === 0) { if (Object.keys(prevCardDetails).length === 0) {
+9 -5
View File
@@ -1,5 +1,4 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { useNavigate } from "react-router-dom";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import Icons from "../../Helpers/Icons"; import Icons from "../../Helpers/Icons";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
@@ -15,10 +14,9 @@ function AddFundPop({
setConfirmCredit, setConfirmCredit,
walletItem, walletItem,
}) { }) {
const navigate = useNavigate();
const apiCall = new usersService(); const apiCall = new usersService();
let countryWallet = walletItem?.country; let countryWallet = walletItem?.country;
const { payment, currency } = _payment; const { currency } = _payment;
const [inputError, setInputError] = useState(""); const [inputError, setInputError] = useState("");
let __awaitComponent = confirmCredit.show.awaitConfirm; let __awaitComponent = confirmCredit.show.awaitConfirm;
@@ -44,6 +42,12 @@ function AddFundPop({
return; return;
} }
if (Number(input) * 100 > Number(walletItem?.transfer_limit)) {
setInputError("Credit limit has been exceeded");
setTimeout(() => setInputError(""), 5000);
return;
}
if (isNaN(input)) { if (isNaN(input)) {
setConfirmCredit((prev) => ({ setConfirmCredit((prev) => ({
...prev, ...prev,
@@ -106,14 +110,14 @@ function AddFundPop({
</h1> </h1>
<div className="field w-full max-w-[250px]"> <div className="field w-full max-w-[250px]">
<InputCom <InputCom
fieldClass="px-6" fieldClass="px-6 text-right"
type="text" type="text"
name="amount" name="amount"
placeholder="0" placeholder="0"
value={input} value={input}
inputHandler={handleChange} inputHandler={handleChange}
/> />
<p className="text-base text-red-500 h-5"> <p className="text-base text-red-500 italic h-5">
{inputError && inputError} {inputError && inputError}
</p> </p>
</div> </div>
@@ -1,12 +1,7 @@
import React from "react"; import React from "react";
function CompleteConfirmCredit({ onClose, confirmCredit }) { function CompleteConfirmCredit({ onClose, confirmCredit }) {
const { data } = confirmCredit; const { data } = confirmCredit
const backToWallet = () => {
onClose();
window.location.reload(true);
};
return ( return (
<div className="logout-modal-body w-full flex flex-col items-center"> <div className="logout-modal-body w-full flex flex-col items-center">
<div className="content-wrapper w-full h-[32rem]"> <div className="content-wrapper w-full h-[32rem]">
@@ -104,7 +99,7 @@ function CompleteConfirmCredit({ onClose, confirmCredit }) {
<div className="md:p-8 p-4 add-fund-btn flex justify-end items-center py-4 gap-4"> <div className="md:p-8 p-4 add-fund-btn flex justify-end items-center py-4 gap-4">
<button <button
className="px-4 h-11 flex justify-center items-center btn-gradient text-white text-base rounded-full w-[100px]" className="px-4 h-11 flex justify-center items-center btn-gradient text-white text-base rounded-full w-[100px]"
onClick={backToWallet} onClick={onClose}
> >
Ok Ok
</button> </button>
@@ -113,7 +113,7 @@ function ConfirmAddFund({
const config = { const config = {
public_key: process.env.REACT_APP_FLUTTERWAVE_APIKEY, public_key: process.env.REACT_APP_FLUTTERWAVE_APIKEY,
tx_ref: Date.now(), tx_ref: __confirmData?.credit_reference,
currency: "NGN", currency: "NGN",
amount: Number(__confirmData.amount), amount: Number(__confirmData.amount),
payment_options: "card,mobilemoney,ussd", payment_options: "card,mobilemoney,ussd",
@@ -124,27 +124,28 @@ function ConfirmAddFund({
}, },
customizations: { customizations: {
title: "WrenchBoard", title: "WrenchBoard",
description: "Topup Payment", description: "Add Credit Payment",
logo: "https://st2.depositphotos.com/4403291/7418/v/450/depositphotos_74189661-stock-illustration-online-shop-log.jpg", logo: "https://www.wrenchboard.com/assets/images/wrench-500-500-icon.png",
}, },
}; };
//debugger;
const fwConfig = { const fwConfig = {
...config, ...config,
text: "Proceed", text: "Proceed",
callback: (response) => { callback: (response) => {
onSuccessPayment(); onSuccessPayment();
closePaymentModal(); setTimeout(() => {
closePaymentModal();
}, 2000);
}, },
onClose: () => {},
}; };
const onSuccessPayment = () => { const onSuccessPayment = () => {
setRequestStatus({ message: "", loading: true, status: false }); setRequestStatus({ message: "", loading: true, status: false });
const reqData = { amount: Number(__confirmData?.amount), currency: "NGN" }; const reqData = { tx_ref: __confirmData?.credit_reference };
console.log("**** onSuccessPayment **** THIS WAS REACHED");
apiURL apiURL
.startTopUp(reqData) .resultTopUp(reqData)
.then((res) => { .then((res) => {
if (res.data.internal_return < 0) { if (res.data.internal_return < 0) {
setRequestStatus({ setRequestStatus({
@@ -159,8 +160,15 @@ function ConfirmAddFund({
loading: false, loading: false,
status: true, status: true,
}); });
toast.success("Account Topup was successful");
onClose() setConfirmCredit((prev) => ({
...prev,
show: {
awaitConfirm: { loader: false, state: false },
acceptConfirm: { loader: false, state: true },
},
data: res,
}));
dispatch(tableReload({ type: "WALLETTABLE" })); dispatch(tableReload({ type: "WALLETTABLE" }));
navigate("/my-wallet", { replace: true }); navigate("/my-wallet", { replace: true });
// setTimeout(() => { // setTimeout(() => {
@@ -300,7 +308,7 @@ function ConfirmAddFund({
}, },
data: {}, data: {},
})); }));
} };
return ( return (
<div className="content-wrapper w-full h-[32rem]"> <div className="content-wrapper w-full h-[32rem]">
@@ -1,9 +1,10 @@
import { useState } from "react"; import { useState } from "react";
import { useNavigate } from "react-router-dom";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import InputCom from "../../Helpers/Inputs/InputCom"; import InputCom from "../../Helpers/Inputs/InputCom";
import ModalCom from "../../Helpers/ModalCom"; import ModalCom from "../../Helpers/ModalCom";
import LoadingSpinner from "../../Spinners/LoadingSpinner"; import LoadingSpinner from "../../Spinners/LoadingSpinner";
import { useDispatch } from "react-redux";
import { tableReload } from "../../../store/TableReloads";
function ConfirmNairaWithdraw({ function ConfirmNairaWithdraw({
payment, payment,
@@ -14,7 +15,7 @@ function ConfirmNairaWithdraw({
setShowNairaWithdraw, setShowNairaWithdraw,
}) { }) {
const apiURL = new usersService(); const apiURL = new usersService();
const navigate = useNavigate(); const dispatch = useDispatch();
let [requestStatus, setRequestStatus] = useState({ let [requestStatus, setRequestStatus] = useState({
message: "", message: "",
@@ -90,6 +91,7 @@ function ConfirmNairaWithdraw({
state: res.data, state: res.data,
}); });
}, 5000); }, 5000);
dispatch(tableReload({ type: "WALLETTABLE" }));
return; return;
}) })
.catch((error) => { .catch((error) => {
@@ -101,19 +103,6 @@ function ConfirmNairaWithdraw({
}); });
}; };
const getBack = () => {
action();
setShowNairaWithdraw({
show: true,
data: {},
});
};
const completeWithdrawal = () => {
action();
window.location.reload(true);
};
return ( return (
<ModalCom action={action} situation={situation} className="edit-popup"> <ModalCom action={action} situation={situation} className="edit-popup">
<div className="logout-modal-wrapper lw-[90%] md:w-[768px] h-full lg:h-auto bg-white dark:bg-dark-white lg:rounded-2xl"> <div className="logout-modal-wrapper lw-[90%] md:w-[768px] h-full lg:h-auto bg-white dark:bg-dark-white lg:rounded-2xl">
@@ -263,6 +252,10 @@ function ConfirmNairaWithdraw({
?.toLowerCase() ?.toLowerCase()
.includes("limit") .includes("limit")
? "Transfer limit Error" ? "Transfer limit Error"
: completeNairaWithdraw.state?.bad_param
?.toLowerCase()
.includes("balance")
? "Insufficient Balance"
: "An Error Occurred"}{" "} : "An Error Occurred"}{" "}
</h1> </h1>
</div> </div>
@@ -283,6 +276,10 @@ function ConfirmNairaWithdraw({
?.toLowerCase() ?.toLowerCase()
.includes("limit") .includes("limit")
? "The transfer limit has been exceeded" ? "The transfer limit has been exceeded"
: completeNairaWithdraw.state?.bad_param
?.toLowerCase()
.includes("balance")
? "Insufficient Balance for Transaction"
: "Could not perform transaction"} : "Could not perform transaction"}
</span> </span>
</div> </div>
@@ -405,7 +402,7 @@ function ConfirmNairaWithdraw({
<button <button
onClick={ onClick={
completeNairaWithdraw.show completeNairaWithdraw.show
? completeWithdrawal ? action
: completeNairaWithdraw?.state?.internal_return < 0 : completeNairaWithdraw?.state?.internal_return < 0
? action ? action
: handleSubmit : handleSubmit
@@ -171,8 +171,8 @@ function NairaWithdraw({
setErrorMsgs({ amount: "amount required" }); setErrorMsgs({ amount: "amount required" });
setTimeout(() => setErrorMsgs({ amount: "" }), 3000); setTimeout(() => setErrorMsgs({ amount: "" }), 3000);
return; return;
} else if (Number(values.amount) > Number(wallet?.transfer_limit)) { }else if (Number(values.amount * 100) > Number(wallet?.transfer_limit)) {
setErrorMsgs({ amount: "transfer limit exceeded" }); setErrorMsgs({ amount: "Withdraw limit has been exceeded" });
setTimeout(() => setErrorMsgs({ amount: "" }), 3000); setTimeout(() => setErrorMsgs({ amount: "" }), 3000);
return; return;
} }
@@ -326,8 +326,8 @@ function NairaWithdraw({
<InputCom <InputCom
fieldClass="px-4 text-end" fieldClass="px-4 text-end"
parentClass="flex items-center gap-1 justify-between" parentClass="flex items-center gap-1 justify-between"
labelClass="flex-[0.3] mb-0" labelClass="flex-[0.4] mb-0"
inputClass="flex-[0.7] max-w-[12rem]" inputClass="flex-[0.6] max-w-[12rem]"
label="Amount:" label="Amount:"
type="number" type="number"
name="amount" name="amount"
-3
View File
@@ -67,9 +67,6 @@ const WalletRoutes = () => {
getPaymentHistory() getPaymentHistory()
}, [walletTable]); }, [walletTable]);
console.log('TESTING',walletTable);
return ( return (
<Layout> <Layout>
<Suspense fallback={<LoadingSpinner size="16" color="sky-blue" />}> <Suspense fallback={<LoadingSpinner size="16" color="sky-blue" />}>
+1 -19
View File
@@ -8,30 +8,12 @@ function WalletAction({ walletItem, payment, openPopUp }) {
show: false, show: false,
state: {}, state: {},
}); // DETERMINES WHEN NAIRA WITHDRAWAL POPS UP }); // DETERMINES WHEN NAIRA WITHDRAWAL POPS UP
const [countries, setCountries] = useState([]);
const [showConfirmNairaWithdraw, setShowConfirmNairaWithdraw] = useState({ const [showConfirmNairaWithdraw, setShowConfirmNairaWithdraw] = useState({
show: false, show: false,
state: {}, state: {},
}); // DETERMINES WHEN CONFIRM NAIRA WITHDRAWAL POPS UP }); // DETERMINES WHEN CONFIRM NAIRA WITHDRAWAL POPS UP
const userApi = new usersService();
// Get Country Api
const getCountryList = useCallback(async () => {
const res = await userApi.getSignupCountryData();
try {
if (res.status === 200) {
const { signup_country } = await res.data;
setCountries(signup_country);
} else if (res.data.result !== 100) {
setCountries("Nothing see here!");
}
} catch (error) {
throw new Error(error);
}
}, []);
return ( return (
<div className="counters w-full flex justify-between gap-2"> <div className="counters w-full flex justify-between gap-2">
<div className="w-1/2 flex justify-center items-center"> <div className="w-1/2 flex justify-center items-center">
+1 -1
View File
@@ -14,7 +14,7 @@ import WalletHeader from "../MyWallet/WalletHeader";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
import Flag from "../../assets/images/united-states.svg"; import Flag from "../../assets/images/united-states.svg";
import siteLogo from "../../assets/images/wrenchboard.png"; import siteLogo from "../../assets/images/wrenchboard-logo-text.png";
import formattedDate from "../../lib/fomattedDate"; import formattedDate from "../../lib/fomattedDate";
import { updateNotifications } from "../../store/notifications"; import { updateNotifications } from "../../store/notifications";
import TimeDifference from "../Helpers/TimeDifference"; import TimeDifference from "../Helpers/TimeDifference";
+1 -1
View File
@@ -4,7 +4,7 @@ import { NavLink } from "react-router-dom";
import { import {
default as logo, default as logo,
default as logo3, default as logo3,
} from "../../assets/images/wrenchboard.png"; //logo-2.svg"; } from "../../assets/images/wrenchboard-logo-text.png"; //logo-2.svg";
import DarkModeContext from "../Contexts/DarkModeContext"; import DarkModeContext from "../Contexts/DarkModeContext";
import Icons from "../Helpers/Icons"; import Icons from "../Helpers/Icons";
+1 -1
View File
@@ -4,7 +4,7 @@ import { NavLink } from "react-router-dom";
import { import {
default as logo, default as logo,
default as logo3, default as logo3,
} from "../../assets/images/wrenchboard.png"; } from "../../assets/images/wrenchboard-logo-text.png";
import DarkModeContext from "../Contexts/DarkModeContext"; import DarkModeContext from "../Contexts/DarkModeContext";
import Icons from "../Helpers/Icons"; import Icons from "../Helpers/Icons";
+18 -3
View File
@@ -577,16 +577,31 @@ class usersService {
return this.postAuxEnd("/familymanage", postData); return this.postAuxEnd("/familymanage", postData);
} }
//END POINT CALL FOR ACCOUNT TOP // END POINT CALL FOR ACCOUNT TOP
startTopUp(post) { startTopUp(post) {
alert("WHY ARE WE CALLING THIS ?");
// var postData = {
// uid: localStorage.getItem("uid"),
// member_id: localStorage.getItem("member_id"),
// sessionid: localStorage.getItem("session_token"),
// action: 11062,
// ...post,
// };
// console.log("starttopup",postData);
// return this.postAuxEnd("/starttopup", postData);
}
resultTopUp(post) {
var postData = { var postData = {
uid: localStorage.getItem("uid"), uid: localStorage.getItem("uid"),
member_id: localStorage.getItem("member_id"), member_id: localStorage.getItem("member_id"),
sessionid: localStorage.getItem("session_token"), sessionid: localStorage.getItem("session_token"),
action: 11062, action: 11061,
...post, ...post,
}; };
return this.postAuxEnd("/starttopup", postData); console.log("topupresult",postData);
return this.postAuxEnd("/topupresult", postData);
} }
//END POINT CALL FOR SENDING REFERRAL MESSAGE //END POINT CALL FOR SENDING REFERRAL MESSAGE