Viewing File: /home/ubuntu/vedadeals-frontend-base/src/components/Profile/PaymentSection.jsx

import React, { useState, useEffect } from 'react';
import AddCardSection from './AddCardSection';
import { Link } from 'react-router-dom';
import { Image } from 'react-bootstrap';
import { connect } from 'react-redux';
import { fetchUserCardListStart } from '../store/actions/WalletAction';
import { withTranslation, useTranslation } from "react-multi-lang";
import SomethingWrong from '../Helper/SomethingWrong';
import NoDataFound from '../Helper/NoDataFound';
import SingleCard from './SingleCard';
import Skeleton from 'react-loading-skeleton';
import 'react-loading-skeleton/dist/skeleton.css';
import NoCardDetailsFound from '../Helper/NoCardDetailsFound';


const PaymentSection = (props) => {
  const [skipFirst, setSkipFirst] = useState(true);
  const t = useTranslation();

  useEffect(() => {
    props.dispatch(fetchUserCardListStart());
  }, []);

  useEffect(() => {
    if (!skipFirst && !props.userCardList.loading && Object.keys(props.userCardList.data).length > 0) {
      if (props.userCardList.data.user_cards && props.userCardList.data.user_cards.length > 0) {
        props.userCardList.data.user_cards.map((card, i) => {
          if (card.is_default === 1)
            props.setSelectedCard(card.user_card_id);
        })
      } else {
        props.setSelectedCard(null);
      }
    }
    setSkipFirst(false);
  }, [props.userCardList]);

  useEffect(() => {
    if (!skipFirst && !props.addUserCard.loading && Object.keys(props.addUserCard.data).length > 0) {
      props.dispatch(fetchUserCardListStart());
    }
  }, [props.addUserCard]);

  return (
    <div className="payment-radio-box">
      {props.userCardList.loading ?
        <Skeleton
          count={2}
          height={100}
        />
        : props.userCardList.data.user_cards ?
          props.userCardList.data.user_cards.length > 0 ?
            props.userCardList.data.user_cards.map((card, i) =>
              <SingleCard
                card={card}
                key={i}
                selectedCard={props.selectedCard}
                setSelectedCard={props.setSelectedCard}
              />
            )
            : <NoCardDetailsFound/>
          : <SomethingWrong />
      }

      {/* <div className="mt-3">
                    <Link to="" className="address-button">
                      Add New Card
                    </Link>
                  </div> */}
      <div className="profile-details-title">
        <h4>{t("add_new_card")}</h4>
      </div>
      <AddCardSection />
    </div >
  );
}

const mapStateToPros = (state) => ({
  addUserCard: state.wallet.addUserCard,
  userCardList: state.wallet.userCardList,
});

function mapDispatchToProps(dispatch) {
  return { dispatch };
}

export default connect(
  mapStateToPros,
  mapDispatchToProps
)(withTranslation(PaymentSection));
Back to Directory File Manager