Viewing File: /home/ubuntu/vedadeals-frontend-base/src/components/Profile/SingleCard.jsx
import React, { useEffect, useState } from "react";
import { Image } from "react-bootstrap";
import { connect } from "react-redux";
import { withTranslation, useTranslation } from "react-multi-lang";
import { Link } from "react-router-dom";
import {
deleteUserCardStart,
setDefaultUserCardStart,
fetchUserCardListStart,
} from "../store/actions/WalletAction";
const SingleCard = ({ actions = true, ...props }) => {
const { card, selectedCard, setSelectedCard } = props;
const [skipRender, setSkipRender] = useState(true);
const t = useTranslation();
const setDefaultAccount = (e) => {
props.dispatch(
setDefaultUserCardStart({
user_card_id: card.user_card_id,
})
);
e.stopPropagation();
};
const removeAccount = (e) => {
e.stopPropagation();
props.dispatch(
deleteUserCardStart({
user_card_id: card.user_card_id,
})
);
};
useEffect(() => {
if (
!skipRender &&
!props.defaultUserCard.loading &&
Object.keys(props.defaultUserCard.data).length > 0
) {
props.dispatch(fetchUserCardListStart());
}
setSkipRender(false);
}, [props.defaultUserCard]);
return (
<div className="payment-radio-btn">
<input
name="plan"
className="radio"
type="radio"
checked={selectedCard === card.user_card_id}
id="payment"
/>
<label
name="plan"
className="radio"
type="radio"
checked={selectedCard === card.user_card_id}
htmlFor="payment"
onClick={() => setSelectedCard(card.user_card_id)}
>
<p>
<Image
src={window.location.origin + "/images/visa.png"}
type="image/png"
/>
</p>
<p>xxxx xxxx xxxx {card.last_four}</p>
<p>{card.card_holder_name}</p>
{actions ?
<>
{card.is_default == 1 ? (
<span className="text-success point">
{t("default")}
</span>
) : props.defaultUserCard.loadingButtonContent &&
props.defaultUserCard.data.user_card_id === card.user_card_id ? (
props.defaultUserCard.loadingButtonContent
) : (
<span
className="text-warning point"
onClick={setDefaultAccount}
>
{t("set_as_default")}
</span>
)}
{props.deleteUserCard.loadingButtonContent &&
props.deleteUserCard.data.user_card_id === card.user_card_id ? (
props.deleteUserCard.loadingButtonContent
) : (
<Link to="" className="card-edit-icon" onClick={removeAccount}>
<span>
<Image
src={window.location.origin + "/images/delete-1.svg"}
type="image/png"
/>
</span>
{t("delete")}
</Link>
)}
</>
: null
}
<div></div>
</label>
</div>
);
};
const mapStateToPros = (state) => ({
defaultUserCard: state.wallet.defaultUserCard,
deleteUserCard: state.wallet.deleteUserCard,
userCardList: state.wallet.userCardList,
});
function mapDispatchToProps(dispatch) {
return { dispatch };
}
export default connect(
mapStateToPros,
mapDispatchToProps
)(withTranslation(SingleCard));
Back to Directory
File Manager