Fixed Layout for confirm add and added comments

This commit is contained in:
2023-09-12 09:50:36 +01:00
parent b0a287c6a8
commit 4f0a6f67c3
5 changed files with 103 additions and 68 deletions
@@ -1,5 +1,3 @@
import React from "react";
function CompleteConfirmCredit({ onClose, confirmCredit }) { function CompleteConfirmCredit({ onClose, confirmCredit }) {
const { data } = confirmCredit; const { data } = confirmCredit;
return ( return (
@@ -7,25 +7,32 @@ import usersService from "../../../services/UsersService";
import { tableReload } from "../../../store/TableReloads"; import { tableReload } from "../../../store/TableReloads";
import LoadingSpinner from "../../Spinners/LoadingSpinner"; import LoadingSpinner from "../../Spinners/LoadingSpinner";
function ThePaymentText({ value, type }) { function ThePaymentText({ value, type }) {
const cardDetails = value; const { cardNum } = value;
value.description = let description = value.description;
type === "new" let digits = value.digits;
? cardDetails.cardNum[0] === "4"
? "Visa" if (type === "new") {
: cardDetails.cardNum[0] == "5" const firstDigit = cardNum[0];
? "Master" if (firstDigit === "4") {
: "ATM" description = "Visa";
: value.description; } else if (firstDigit === "5") {
value.digits = type === "new" ? cardDetails.cardNum.slice(-4) : value.digits; description = "Master";
} else {
description = "ATM";
}
digits = cardNum.slice(-4);
}
return ( return (
<div className="my-2 flex items-center gap-5"> <div className="my-2 flex items-center gap-5">
<div className="card-details flex items-center gap-3"> <div className="card-details flex items-center gap-3">
<h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1 space-x-1"> <h1 className="text-xl font-normal text-dark-gray dark:text-white tracking-tighter my-1 space-x-1">
{value.description} Card {description} Card
</h1> </h1>
<p className="text-base font-bold text-dark-gray dark:text-white tracking-wide"> <p className="text-xl font-normal text-dark-gray dark:text-white tracking-wide">
Bank **************{value.digits} Bank **************{digits}
</p> </p>
</div> </div>
</div> </div>
@@ -41,7 +48,7 @@ function AmountSection({ currency, amount, country }) {
<h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1"> <h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1">
Amount({currency}) Amount({currency})
</h1> </h1>
<span className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1"> <span className="text-xl font-normal text-dark-gray dark:text-white tracking-tighter my-1">
{formattedAmount} {formattedAmount}
</span> </span>
</div> </div>
@@ -59,7 +66,7 @@ function TransactionFeeSection({ currency, fee, country }) {
<h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1"> <h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1">
Transaction Fee Transaction Fee
</h1> </h1>
<span className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1"> <span className="text-xl font-normal text-dark-gray dark:text-white tracking-tighter my-1">
{formattedFee} {formattedFee}
</span> </span>
</div> </div>
@@ -78,7 +85,7 @@ function TotalSection({ currency, amount, fee, country }) {
<h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1"> <h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1">
Total Total
</h1> </h1>
<span className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1"> <span className="text-xl font-normal text-dark-gray dark:text-white tracking-tighter my-1">
{formattedTotal} {formattedTotal}
</span> </span>
</div> </div>
@@ -127,7 +134,7 @@ function ConfirmAddFund({
logo: "https://www.wrenchboard.com/assets/images/wrench-500-500-icon.png", logo: "https://www.wrenchboard.com/assets/images/wrench-500-500-icon.png",
}, },
}; };
//debugger;
const fwConfig = { const fwConfig = {
...config, ...config,
text: "Proceed", text: "Proceed",
@@ -188,27 +195,40 @@ function ConfirmAddFund({
const debouncedSuccessPayment = debounce(onSuccessPayment, 5000); const debouncedSuccessPayment = debounce(onSuccessPayment, 5000);
/**
* Handles the process of making a payment using a previously saved card.
* Updates the state to show a loader while the payment is being processed,
* sends a request to the server to make the payment, and updates the state with the response.
* If the payment is successful, it also dispatches an action to reload the wallet table.
*/
const handlePrevCard = async () => { const handlePrevCard = async () => {
const { amount, credit_reference, currency } = __confirmData;
const { card_uid } = __confirmCardDetails;
const reqData = {
amount: amount * 100,
card_uid,
credit_reference,
currency,
};
try { try {
// Show loader while the payment is being processed
setConfirmCredit((prev) => ({ setConfirmCredit((prev) => ({
...prev, ...prev,
show: { show: {
acceptConfirm: { loader: true }, acceptConfirm: { loader: true },
}, },
})); }));
// Extract necessary data from confirmCredit and confirmCardDetails objects
const { amount, credit_reference, currency } = __confirmData;
const { card_uid } = __confirmCardDetails;
// Create request data object with required parameters for making the payment
const reqData = {
amount: amount * 100,
card_uid,
credit_reference,
currency,
};
// Send request to server to make the payment using getPaidPrevCard method of usersService
const res = await apiURL.getPaidPrevCard(reqData); const res = await apiURL.getPaidPrevCard(reqData);
const _response = res.data; const _response = res.data;
if (res.data.internal_return < 0) {
// If internal_return value in the response is less than 0, hide the loader and return
if (_response.internal_return < 0) {
setConfirmCredit((prev) => ({ setConfirmCredit((prev) => ({
...prev, ...prev,
show: { show: {
@@ -218,6 +238,7 @@ function ConfirmAddFund({
return; return;
} }
// Update state to show the acceptConfirm state and the response data
setTimeout(() => { setTimeout(() => {
setConfirmCredit((prev) => ({ setConfirmCredit((prev) => ({
...prev, ...prev,
@@ -227,9 +248,11 @@ function ConfirmAddFund({
}, },
data: _response, data: _response,
})); }));
// Dispatch an action to reload the wallet table
dispatch(tableReload({ type: "WALLETTABLE" })); dispatch(tableReload({ type: "WALLETTABLE" }));
}, 1500); }, 1500);
} catch (error) { } catch (error) {
// Handle error and hide the loader
setConfirmCredit((prev) => ({ setConfirmCredit((prev) => ({
...prev, ...prev,
show: { show: {
@@ -240,45 +263,44 @@ function ConfirmAddFund({
} }
}; };
/**
* Handles the payment process when a new card is used.
* @async
*/
const handleNewCard = async () => { const handleNewCard = async () => {
const { amount, credit_reference, uid } = __confirmData;
const { address, cardNum, cvv, expirationMonth, expirationYear } =
__confirmCardDetails;
const reqData = {
amount: amount * 100,
cardnumber: cardNum.replace(/\s/g, ""),
credit_reference,
cvc: cvv,
description: address,
exp_month: expirationMonth,
exp_year: expirationYear,
paymenttype: 100,
uid,
};
try { try {
// Extract necessary data from __confirmData and __confirmCardDetails
const { amount, credit_reference, uid } = __confirmData;
const { address, cardNum, cvv, expirationMonth, expirationYear } = __confirmCardDetails;
// Set loading state to indicate payment is being processed
setConfirmCredit((prev) => ({ setConfirmCredit((prev) => ({
...prev, ...prev,
show: { show: {
acceptConfirm: { loader: true }, acceptConfirm: { loader: true },
}, },
})); }));
// Prepare request data
const reqData = {
amount: amount * 100,
cardnumber: cardNum.replace(/\s/g, ""),
credit_reference,
cvc: cvv,
description: address,
exp_month: expirationMonth,
exp_year: expirationYear,
paymenttype: 100,
uid,
};
// Send request to server to process payment
const res = await apiURL.getPaidNewCard(reqData); const res = await apiURL.getPaidNewCard(reqData);
const _response = res.data; const _response = res.data;
if (res.data.internal_return < 0) {
setConfirmCredit((prev) => ({
...prev,
show: {
awaitConfirm: { loader: false, state: false },
acceptConfirm: { loader: false, state: true },
},
data: _response,
}));
return;
}
setTimeout(() => { // Handle response from server
if (res.data.internal_return < 0) {
// Payment could not be completed
setConfirmCredit((prev) => ({ setConfirmCredit((prev) => ({
...prev, ...prev,
show: { show: {
@@ -287,9 +309,23 @@ function ConfirmAddFund({
}, },
data: _response, data: _response,
})); }));
dispatch(tableReload({ type: "WALLETTABLE" })); } else {
}, 1500); // Payment was successful
setTimeout(() => {
setConfirmCredit((prev) => ({
...prev,
show: {
awaitConfirm: { loader: false, state: false },
acceptConfirm: { loader: false, state: true },
},
data: _response,
}));
console.log("Show meeeeeeeeee");
dispatch(tableReload({ type: "WALLETTABLE" }));
}, 1500);
}
} catch (error) { } catch (error) {
// Handle error during payment process
setConfirmCredit((prev) => ({ setConfirmCredit((prev) => ({
...prev, ...prev,
show: { show: {
@@ -362,7 +398,7 @@ function ConfirmAddFund({
<h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1"> <h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1">
Reference No Reference No
</h1> </h1>
<span className="text-xl font-bold text-dark-gray dark:text-white tracking-tighter my-1"> <span className="text-xl font-normal text-dark-gray dark:text-white tracking-tighter my-1">
{__confirmData?.credit_reference} {__confirmData?.credit_reference}
</span> </span>
</div> </div>
@@ -6,7 +6,7 @@ import CompleteConfirmCredit from "./CompleteConfirmCredit";
import ConfirmAddFund from "./ConfirmAddFund"; import ConfirmAddFund from "./ConfirmAddFund";
const CreditPopup = ({ details, onClose, situation, walletItem }) => { const CreditPopup = ({ details, onClose, situation, walletItem }) => {
let [input, setInput] = useState(""); const [input, setInput] = useState("");
const [confirmCredit, setConfirmCredit] = useState({ const [confirmCredit, setConfirmCredit] = useState({
show: { show: {
awaitConfirm: { loader: false, state: false }, awaitConfirm: { loader: false, state: false },
@@ -15,6 +15,8 @@ const CreditPopup = ({ details, onClose, situation, walletItem }) => {
data: {}, data: {},
}); });
console.log(confirmCredit);
return ( return (
<ModalCom <ModalCom
action={onClose} action={onClose}
+4 -1
View File
@@ -13,7 +13,10 @@ export default function WalletBox({ wallet, payment }) {
</div> </div>
) : wallet.data.length ? ( ) : wallet.data.length ? (
wallet.data.map((item, index) => ( wallet.data.map((item, index) => (
<div key={item.wallet_uid} className="lg:w-full h-full mb-10 lg:mb-0"> <div
key={item.wallet_uid}
className="lg:w-full h-full mb-10 lg:mb-0"
>
<WalletItemCard walletItem={item} payment={payment} /> <WalletItemCard walletItem={item} payment={payment} />
</div> </div>
)) ))
@@ -7,10 +7,6 @@ import CreditPopup from "./Popup/CreditPopup";
import WalletAction from "./WalletAction"; import WalletAction from "./WalletAction";
export default function WalletItemCard({ walletItem, payment }) { export default function WalletItemCard({ walletItem, payment }) {
// const [eth] = useState(90);
// const [btc] = useState(85);
// const [ltc] = useState(20);
const { userDetails } = useSelector((state) => state?.userDetails); const { userDetails } = useSelector((state) => state?.userDetails);
let accountType = userDetails?.account_type == "FAMILY"; let accountType = userDetails?.account_type == "FAMILY";