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

import { withTranslation, useTranslation } from "react-multi-lang";
import { connect } from "react-redux";
import React, { useEffect, useState } from "react";
import {
  fetchUserBillingAccountsListStart,
  setDefaultUserBillingAccountsStart,
  deleteUserBillingAccountsStart,
} from "../store/actions/WalletAction";

const SingleBillingAddressCard = (props) => {
  const { selectedAccount, setSelectedAccount, account } = props;
  const [skipRender, setSkipRender] = useState(true);
  const t = useTranslation();

  const setDefaultAccount = (e) => {
    props.dispatch(
      setDefaultUserBillingAccountsStart({
        user_billing_account_id: account.user_billing_account_id,
      })
    );
    e.stopPropagation();
  };

  const removeAccount = (e) => {
    props.dispatch(
      deleteUserBillingAccountsStart({
        user_billing_account_id: account.user_billing_account_id,
      })
    );
    e.stopPropagation();
  };

  useEffect(() => {
    if (
      !skipRender &&
      !props.defaultUserBillingAccounts.loading &&
      Object.keys(props.defaultUserBillingAccounts.data).length > 0
    ) {
      props.dispatch(fetchUserBillingAccountsListStart());
    }
    setSkipRender(false);
  }, [props.defaultUserBillingAccounts]);


  

  return (
    <div className="payment-radio-box">
      <div className="payment-radio-btn label-bg">
        <input
          name="plan"
          type="radio"
          className="radio"
          id="address-1"
          checked={selectedAccount === account.user_billing_account_id}
        />
        <label
          name="plan"
          className="radio"
          type="radio"
          checked={selectedAccount === account.user_billing_account_id}
          onClick={() => setSelectedAccount(account.user_billing_account_id)}
        >
          <div className="billing-details">
            <h5>
              {account.first_name} {account.last_name}
            </h5>
            <p>
              {new Array(account.account_number.length - 4 + 1).join("x") +
                account.account_number.slice(-4)}
            </p>
            {account.is_default == 1 ? (
              <span className="text-success">{t("default")}</span>
            ) : props.defaultUserBillingAccounts.loadingButtonContent &&
              props.defaultUserBillingAccounts.data.user_billing_account_id ===
                account.user_billing_account_id ? (
              props.defaultUserBillingAccounts.loadingButtonContent
            ) : (
              <span
                onClick={(event) => setDefaultAccount()}
                className="text-warning"
                style={{ cursor: "pointer" }}
              >
                {t("set_as_default")}
              </span>
            )}
          </div>
          {
            <span
              onClick={removeAccount}
              className="text-danger card-delete del"
            >
              {props.deleteUserBillingAccounts.loadingButtonContent &&
              props.deleteUserBillingAccounts.data.user_billing_account_id ===
                account.user_billing_account_id ? (
                props.deleteUserBillingAccounts.loadingButtonContent
              ) : (
                <img
                  src={window.location.origin + "/images/delete.svg"}
                  width="25"
                  height="25"
                />
              )}
            </span>
          }
        </label>
      </div>
    </div>
  );
};

const mapStateToPros = (state) => ({
  userBillingAccounts: state.wallet.userBillingAccounts,
  defaultUserBillingAccounts: state.wallet.defaultUserBillingAccounts,
  deleteUserBillingAccounts: state.wallet.deleteUserBillingAccounts,
});

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

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