A Metamask fork with Infura removed and default networks editable
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
ciphermask/ui/pages/send/send-content/send-gas-row/send-gas-row.container.js

111 lines
3.2 KiB

import { connect } from 'react-redux';
import {
getBasicGasEstimateLoadingStatus,
getRenderableEstimateDataForSmallButtonsFromGWEI,
getDefaultActiveButtonIndex,
getAdvancedInlineGasShown,
} from '../../../../selectors';
import {
getGasTotal,
getGasPrice,
getGasLimit,
gasFeeIsInError,
getGasInputMode,
updateGasPrice,
updateGasLimit,
isSendStateInitialized,
getIsBalanceInsufficient,
getMinimumGasLimitForSend,
useDefaultGas,
} from '../../../../ducks/send';
import {
resetCustomData,
setCustomGasPrice,
setCustomGasLimit,
} from '../../../../ducks/gas/gas.duck';
import { showModal } from '../../../../store/actions';
import { hexToDecimal } from '../../../../../shared/lib/metamask-controller-utils';
import SendGasRow from './send-gas-row.component';
export default connect(
mapStateToProps,
mapDispatchToProps,
mergeProps,
)(SendGasRow);
function mapStateToProps(state) {
const gasButtonInfo = getRenderableEstimateDataForSmallButtonsFromGWEI(state);
const gasPrice = getGasPrice(state);
const gasLimit = getGasLimit(state);
const activeButtonIndex = getDefaultActiveButtonIndex(
gasButtonInfo,
gasPrice,
);
const gasTotal = getGasTotal(state);
const minimumGasLimit = getMinimumGasLimitForSend(state);
return {
gasTotal,
minimumGasLimit: hexToDecimal(minimumGasLimit),
gasFeeError: gasFeeIsInError(state),
gasLoadingError: isSendStateInitialized(state),
gasPriceButtonGroupProps: {
buttonDataLoading: getBasicGasEstimateLoadingStatus(state),
defaultActiveButtonIndex: 1,
newActiveButtonIndex: activeButtonIndex > -1 ? activeButtonIndex : null,
gasButtonInfo,
},
advancedInlineGasShown: getAdvancedInlineGasShown(state),
gasInputMode: getGasInputMode(state),
gasPrice,
gasLimit,
insufficientBalance: getIsBalanceInsufficient(state),
};
}
function mapDispatchToProps(dispatch) {
return {
showLegacyCustomizeGasModal: () =>
dispatch(showModal({ name: 'LEGACY_CUSTOMIZE_GAS', hideBasic: true })),
updateGasPrice: (gasPrice) => {
dispatch(updateGasPrice(gasPrice));
dispatch(setCustomGasPrice(gasPrice));
},
updateGasLimit: (newLimit) => {
dispatch(updateGasLimit(newLimit));
dispatch(setCustomGasLimit(newLimit));
},
resetCustomData: () => dispatch(resetCustomData()),
useDefaultGas: () => dispatch(useDefaultGas()),
};
}
function mergeProps(stateProps, dispatchProps, ownProps) {
const { gasPriceButtonGroupProps } = stateProps;
const { gasButtonInfo } = gasPriceButtonGroupProps;
const {
updateGasPrice: dispatchUpdateGasPrice,
useDefaultGas: dispatchUseDefaultGas,
resetCustomData: dispatchResetCustomData,
...otherDispatchProps
} = dispatchProps;
return {
...stateProps,
...otherDispatchProps,
...ownProps,
gasPriceButtonGroupProps: {
...gasPriceButtonGroupProps,
handleGasPriceSelection: ({ gasPrice }) =>
dispatchUpdateGasPrice(gasPrice),
},
resetGasButtons: () => {
dispatchResetCustomData();
dispatchUpdateGasPrice(gasButtonInfo[1].priceInHexWei);
dispatchUseDefaultGas();
},
updateGasPrice: dispatchUpdateGasPrice,
};
}