Files
Users-Wrench/src/components/FamilyAcc/Tabs/wallet/Wallet.jsx
T
2024-11-04 06:50:11 +01:00

137 lines
4.8 KiB
React

import React, { useState } from 'react'
import { localImgLoad } from '../../../../lib'
import { PriceFormatter } from '../../../Helpers/PriceFormatter'
import FamilyAddFundPopout from './FamilyAddFundPopout'
import VirtualAddCardFamilyPopout from './VirtualAddCardFamilyPopout'
function Wallet({wallet, familyData, setFamilyWalletReload}) {
const [addFundPopout, setAddFundPopout] = useState({ show: false, data: {} })
console.log('WALLET', wallet.brand)
// virtual add card popout
const [virtualPopup, setVirtualPopup] = useState({ show: false, data: {} });
/*OPENS the virtual add card popout*/
const openVirtualPopUp = (value) => {
setVirtualPopup({
show: true,
data: { ...value },
});
};
/*Closes the virtual add card popout*/
const closeVirtualPopUp = () => {
setVirtualPopup({ show: false, data: {} });
// dispatch(tableReload({ type: "WALLETTABLE" }));
};
// console.log('Extra Actions', Object.keys(wallet.extra_actions))
let extraActions = Object.keys(wallet.extra_actions) // VARIABLE TO HOLD EXTRA ACTIONS VALUES
return (
<div className='w-full p-4 bg-[aliceblue] rounded-lg'
// style={{
// background: `url(${background}) 0% 0% / cover no-repeat`,
// }}
>
<div className="w-full flex justify-start items-center gap-3">
<div className="min-w-[50px] min-h-[50px] max-w-min md:max-w-[80px] max-h-min md:max-h-[80px] rounded-full bg-[#e3e3e3] flex justify-center items-center">
<img
src={wallet.icon}
className="w-full h-full"
alt="currency-icon"
/>
</div>
<div className="w-full flex flex-col">
{wallet?.brand && wallet?.card_last4 ? // FOR VIRTUAL CARD NUMBER ELSE WALLET BALANCE DISPLAY
<div className="w-full flex flex-col gap-2">
{/* <p className="text-base md:text-lg text-thin-light-gray tracking-wide">
Balance:
</p> */}
<p className="text-base md:text-lg font-bold text-purple leading-10">
{wallet.brand} <span> **** **** ***** </span> {wallet?.card_last4}
</p>
</div>
:
<div className="w-full flex gap-2">
<p className="text-base md:text-lg text-thin-light-gray tracking-wide">
Balance:
</p>
<p
className="text-base md:text-lg font-bold text-purple tracking-wide leading-10"
// className="text-[44px] lg:text-[62px] font-bold text-white tracking-wide leading-10 xxs:scale-100 lg:scale-100 xl:scale-125"
>
{PriceFormatter(
Number(wallet.amount) * 0.01,
wallet.code,
wallet.country,
""
)}
</p>
</div>
}
{/* BTN */}
<div className='mt-1 flex justify-end items-center gap-2'>
<button
className="w-[150px] h-[48px] rounded-full text-base text-white bg-sky-500 hover:bg-sky-400"
name="add"
onClick={()=>{
setAddFundPopout({ show: true, data: {} });
}}
>
Add Money
</button>
{/* EXTRA ACTIONS BTN */}
{(extraActions && extraActions?.length > 0) &&
extraActions.map((action, index) => (
<div key={index}>
<button
onClick={() => {
action == 'ADD_VIRTUAL_CARD' ?
openVirtualPopUp({wallet})
:
null
}}
className={`w-[150px] h-[48px] rounded-full text-base text-white bg-[#4687ba] hover:bg-[#009ef7]`}
>
{/* Add Card */}
{wallet?.extra_actions?.[action][0]?.text}
</button>
{/* <WalletExtraFamilyActionBtn /> // TO BE USED lATER IF NEED BE */}
</div>
))
}
</div>
</div>
</div>
{/* MODAL TO ADD FUND */}
{addFundPopout.show &&
<FamilyAddFundPopout
action={() => {
setAddFundPopout({ show: false, data: {} });
setFamilyWalletReload(prev => !prev) // TO RELOAD FAMILY WALLET // DETERMINES WHEN TO RELOAD FAMILY WALLET TAB/PAGE
}}
situation={addFundPopout.show}
wallet={wallet}
familyData={familyData}
/>
}
{/* VIRTUAL CARD POPOUT */}
{virtualPopup.show && (
<VirtualAddCardFamilyPopout
details={virtualPopup.data}
walletItem={wallet}
onClose={closeVirtualPopUp}
situation={virtualPopup.show}
familyData={familyData}
/>
)}
</div>
)
}
export default Wallet