|
|
|
import React from 'react';
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
import { Switch, Route } from 'react-router-dom';
|
|
|
|
import {
|
|
|
|
CONFIRM_APPROVE_PATH,
|
|
|
|
CONFIRM_SAFE_TRANSFER_FROM_PATH,
|
|
|
|
CONFIRM_SEND_TOKEN_PATH,
|
|
|
|
CONFIRM_SET_APPROVAL_FOR_ALL_PATH,
|
|
|
|
CONFIRM_TRANSACTION_ROUTE,
|
|
|
|
CONFIRM_TRANSFER_FROM_PATH,
|
|
|
|
} from '../../helpers/constants/routes';
|
|
|
|
import { transactionFeeSelector } from '../../selectors';
|
|
|
|
import ConfirmApprove from '../confirm-approve';
|
|
|
|
import ConfirmSendToken from '../confirm-send-token';
|
|
|
|
import ConfirmTokenTransactionBase from '../confirm-token-transaction-base';
|
|
|
|
import ConfirmTransactionSwitch from '../confirm-transaction-switch';
|
|
|
|
|
|
|
|
import { useAssetDetails } from '../../hooks/useAssetDetails';
|
|
|
|
|
|
|
|
export default function ConfirmTokenTransactionSwitch({ transaction }) {
|
|
|
|
const {
|
|
|
|
txParams: { data, to: tokenAddress, from: userAddress } = {},
|
|
|
|
} = transaction;
|
|
|
|
|
|
|
|
const {
|
|
|
|
assetStandard,
|
|
|
|
assetName,
|
|
|
|
userBalance,
|
|
|
|
tokenSymbol,
|
|
|
|
decimals,
|
|
|
|
tokenImage,
|
|
|
|
tokenAmount,
|
|
|
|
tokenId,
|
|
|
|
toAddress,
|
|
|
|
} = useAssetDetails(tokenAddress, userAddress, data);
|
|
|
|
|
|
|
|
const {
|
|
|
|
ethTransactionTotal,
|
|
|
|
fiatTransactionTotal,
|
|
|
|
hexTransactionTotal,
|
|
|
|
hexMaximumTransactionFee,
|
|
|
|
} = useSelector((state) => transactionFeeSelector(state, transaction));
|
|
|
|
|
|
|
|
return (
|
|
|
|
<Switch>
|
|
|
|
<Route
|
|
|
|
exact
|
|
|
|
path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_APPROVE_PATH}`}
|
|
|
|
render={() => (
|
|
|
|
<ConfirmApprove
|
|
|
|
assetStandard={assetStandard}
|
|
|
|
assetName={assetName}
|
|
|
|
userBalance={userBalance}
|
|
|
|
tokenSymbol={tokenSymbol}
|
|
|
|
decimals={decimals}
|
|
|
|
tokenImage={tokenImage}
|
|
|
|
tokenAmount={tokenAmount}
|
|
|
|
tokenId={tokenId}
|
|
|
|
userAddress={userAddress}
|
|
|
|
tokenAddress={tokenAddress}
|
|
|
|
toAddress={toAddress}
|
|
|
|
transaction={transaction}
|
|
|
|
ethTransactionTotal={ethTransactionTotal}
|
|
|
|
fiatTransactionTotal={fiatTransactionTotal}
|
|
|
|
hexTransactionTotal={hexTransactionTotal}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
exact
|
|
|
|
path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_SET_APPROVAL_FOR_ALL_PATH}`}
|
|
|
|
render={() => (
|
|
|
|
<ConfirmApprove
|
|
|
|
isSetApproveForAll
|
|
|
|
assetStandard={assetStandard}
|
|
|
|
assetName={assetName}
|
|
|
|
userBalance={userBalance}
|
|
|
|
tokenSymbol={tokenSymbol}
|
|
|
|
decimals={decimals}
|
|
|
|
tokenImage={tokenImage}
|
|
|
|
tokenAmount={tokenAmount}
|
|
|
|
tokenId={tokenId}
|
|
|
|
userAddress={userAddress}
|
|
|
|
tokenAddress={tokenAddress}
|
|
|
|
toAddress={toAddress}
|
|
|
|
transaction={transaction}
|
|
|
|
ethTransactionTotal={ethTransactionTotal}
|
|
|
|
fiatTransactionTotal={fiatTransactionTotal}
|
|
|
|
hexTransactionTotal={hexTransactionTotal}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
exact
|
|
|
|
path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_TRANSFER_FROM_PATH}`}
|
|
|
|
render={() => (
|
|
|
|
<ConfirmTokenTransactionBase
|
|
|
|
assetStandard={assetStandard}
|
|
|
|
assetName={assetName}
|
|
|
|
userBalance={userBalance}
|
|
|
|
tokenSymbol={tokenSymbol}
|
|
|
|
decimals={decimals}
|
|
|
|
image={tokenImage}
|
|
|
|
tokenAddress={tokenAddress}
|
|
|
|
toAddress={toAddress}
|
|
|
|
tokenAmount={tokenAmount}
|
|
|
|
tokenId={tokenId}
|
|
|
|
userAddress={userAddress}
|
|
|
|
transaction={transaction}
|
|
|
|
ethTransactionTotal={ethTransactionTotal}
|
|
|
|
fiatTransactionTotal={fiatTransactionTotal}
|
|
|
|
hexMaximumTransactionFee={hexMaximumTransactionFee}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
exact
|
|
|
|
path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_SAFE_TRANSFER_FROM_PATH}`}
|
|
|
|
render={() => (
|
|
|
|
<ConfirmTokenTransactionBase
|
|
|
|
assetStandard={assetStandard}
|
|
|
|
assetName={assetName}
|
|
|
|
userBalance={userBalance}
|
|
|
|
tokenSymbol={tokenSymbol}
|
|
|
|
decimals={decimals}
|
|
|
|
image={tokenImage}
|
|
|
|
tokenAddress={tokenAddress}
|
|
|
|
toAddress={toAddress}
|
|
|
|
tokenAmount={tokenAmount}
|
|
|
|
tokenId={tokenId}
|
|
|
|
userAddress={userAddress}
|
|
|
|
transaction={transaction}
|
|
|
|
ethTransactionTotal={ethTransactionTotal}
|
|
|
|
fiatTransactionTotal={fiatTransactionTotal}
|
|
|
|
hexMaximumTransactionFee={hexMaximumTransactionFee}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
exact
|
|
|
|
path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_SEND_TOKEN_PATH}`}
|
|
|
|
render={() => (
|
|
|
|
<ConfirmSendToken
|
|
|
|
assetStandard={assetStandard}
|
|
|
|
assetName={assetName}
|
|
|
|
tokenSymbol={tokenSymbol}
|
|
|
|
image={tokenImage}
|
|
|
|
tokenAddress={tokenAddress}
|
|
|
|
toAddress={toAddress}
|
|
|
|
tokenAmount={tokenAmount}
|
|
|
|
tokenId={tokenId}
|
|
|
|
transaction={transaction}
|
|
|
|
ethTransactionTotal={ethTransactionTotal}
|
|
|
|
fiatTransactionTotal={fiatTransactionTotal}
|
|
|
|
hexMaximumTransactionFee={hexMaximumTransactionFee}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
<Route path="*" component={ConfirmTransactionSwitch} />
|
|
|
|
</Switch>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
ConfirmTokenTransactionSwitch.propTypes = {
|
|
|
|
transaction: PropTypes.shape({
|
|
|
|
origin: PropTypes.string,
|
|
|
|
txParams: PropTypes.shape({
|
|
|
|
data: PropTypes.string,
|
|
|
|
to: PropTypes.string,
|
|
|
|
from: PropTypes.string,
|
|
|
|
}),
|
|
|
|
}),
|
|
|
|
};
|