1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Increase default slippage from 2% to 3%, show Advanced Options by default (#10842)

* Increase default slippage from 2% to 3%, show Advanced Options by default

* Disable opening / closing of Advanced Options on the Swap page

* Pre-select previously used slippage value when going back to the Swap page

* Fix lint issues

* Use a callback for setting up an initial customValue
This commit is contained in:
Daniel 2021-04-08 11:58:19 -07:00 committed by GitHub
parent 312f2afc41
commit a814f8ee75
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 111 additions and 109 deletions

View File

@ -512,6 +512,7 @@ export default function BuildQuote({
setMaxSlippage(newSlippage); setMaxSlippage(newSlippage);
}} }}
maxAllowedSlippage={MAX_ALLOWED_SLIPPAGE} maxAllowedSlippage={MAX_ALLOWED_SLIPPAGE}
currentSlippage={maxSlippage}
/> />
</div> </div>
</div> </div>

View File

@ -84,7 +84,7 @@ export default function Swap() {
const { destinationTokenInfo = {} } = fetchParams?.metaData || {}; const { destinationTokenInfo = {} } = fetchParams?.metaData || {};
const [inputValue, setInputValue] = useState(fetchParams?.value || ''); const [inputValue, setInputValue] = useState(fetchParams?.value || '');
const [maxSlippage, setMaxSlippage] = useState(fetchParams?.slippage || 2); const [maxSlippage, setMaxSlippage] = useState(fetchParams?.slippage || 3);
const routeState = useSelector(getBackgroundSwapRouteState); const routeState = useSelector(getBackgroundSwapRouteState);
const selectedAccount = useSelector(getSelectedAccount); const selectedAccount = useSelector(getSelectedAccount);

View File

@ -7,23 +7,18 @@
&__header { &__header {
display: flex; display: flex;
align-items: center; align-items: center;
color: $Blue-500;
margin-bottom: 0; margin-bottom: 0;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
cursor: pointer; cursor: pointer;
background: unset; background: unset;
&--open {
margin-bottom: 8px; margin-bottom: 8px;
} }
}
&__header-text { &__header-text {
@include H6; @include H6;
margin-right: 6px; margin-right: 6px;
color: $Blue-500;
font-weight: 900; font-weight: 900;
} }

View File

@ -6,12 +6,29 @@ import ButtonGroup from '../../../components/ui/button-group';
import Button from '../../../components/ui/button'; import Button from '../../../components/ui/button';
import InfoTooltip from '../../../components/ui/info-tooltip'; import InfoTooltip from '../../../components/ui/info-tooltip';
export default function SlippageButtons({ onSelect, maxAllowedSlippage }) { export default function SlippageButtons({
onSelect,
maxAllowedSlippage,
currentSlippage,
}) {
const t = useContext(I18nContext); const t = useContext(I18nContext);
const [open, setOpen] = useState(false); const [customValue, setCustomValue] = useState(() => {
const [customValue, setCustomValue] = useState(''); if (currentSlippage && currentSlippage !== 2 && currentSlippage !== 3) {
return currentSlippage;
}
return '';
});
const [enteringCustomValue, setEnteringCustomValue] = useState(false); const [enteringCustomValue, setEnteringCustomValue] = useState(false);
const [activeButtonIndex, setActiveButtonIndex] = useState(1); const [activeButtonIndex, setActiveButtonIndex] = useState(() => {
if (currentSlippage === 3) {
return 1;
} else if (currentSlippage === 2) {
return 0;
} else if (currentSlippage) {
return 2;
}
return 1; // Choose activeButtonIndex = 1 for 3% slippage by default.
});
const [inputRef, setInputRef] = useState(null); const [inputRef, setInputRef] = useState(null);
let errorText = ''; let errorText = '';
@ -44,23 +61,12 @@ export default function SlippageButtons({ onSelect, maxAllowedSlippage }) {
return ( return (
<div className="slippage-buttons"> <div className="slippage-buttons">
<button <div className="slippage-buttons__header">
onClick={() => setOpen(!open)}
className={classnames('slippage-buttons__header', {
'slippage-buttons__header--open': open,
})}
>
<div className="slippage-buttons__header-text"> <div className="slippage-buttons__header-text">
{t('swapsAdvancedOptions')} {t('swapsAdvancedOptions')}
</div> </div>
{open ? ( </div>
<i className="fa fa-angle-up" />
) : (
<i className="fa fa-angle-down" />
)}
</button>
<div className="slippage-buttons__content"> <div className="slippage-buttons__content">
{open && (
<div className="slippage-buttons__dropdown-content"> <div className="slippage-buttons__dropdown-content">
<div className="slippage-buttons__buttons-prefix"> <div className="slippage-buttons__buttons-prefix">
<div className="slippage-buttons__prefix-text"> <div className="slippage-buttons__prefix-text">
@ -87,20 +93,20 @@ export default function SlippageButtons({ onSelect, maxAllowedSlippage }) {
setCustomValue(''); setCustomValue('');
setEnteringCustomValue(false); setEnteringCustomValue(false);
setActiveButtonIndex(0); setActiveButtonIndex(0);
onSelect(1); onSelect(2);
}} }}
> >
1% 2%
</Button> </Button>
<Button <Button
onClick={() => { onClick={() => {
setCustomValue(''); setCustomValue('');
setEnteringCustomValue(false); setEnteringCustomValue(false);
setActiveButtonIndex(1); setActiveButtonIndex(1);
onSelect(2); onSelect(3);
}} }}
> >
2% 3%
</Button> </Button>
<Button <Button
className={classnames( className={classnames(
@ -147,7 +153,6 @@ export default function SlippageButtons({ onSelect, maxAllowedSlippage }) {
</Button> </Button>
</ButtonGroup> </ButtonGroup>
</div> </div>
)}
{errorText && ( {errorText && (
<div className="slippage-buttons__error-text">{errorText}</div> <div className="slippage-buttons__error-text">{errorText}</div>
)} )}
@ -159,4 +164,5 @@ export default function SlippageButtons({ onSelect, maxAllowedSlippage }) {
SlippageButtons.propTypes = { SlippageButtons.propTypes = {
onSelect: PropTypes.func.isRequired, onSelect: PropTypes.func.isRequired,
maxAllowedSlippage: PropTypes.number.isRequired, maxAllowedSlippage: PropTypes.number.isRequired,
currentSlippage: PropTypes.number,
}; };