Skip to content

Commit 8d3b5c1

Browse files
committed
misc
1 parent ea5a902 commit 8d3b5c1

File tree

7 files changed

+185
-90
lines changed

7 files changed

+185
-90
lines changed

src/components/transactions/Swap/constants/cow.constants.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ export const COW_PROTOCOL_ETH_FLOW_ADDRESS_BY_ENV = (env: CowEnv) => {
7070
export const COW_CREATE_ORDER_ABI =
7171
'function createOrder((address,address,uint256,uint256,bytes32,uint256,uint32,bool,int64)) returns (bytes32)';
7272

73-
export const HEADER_WIDGET_APP_CODE = 'aave-v3-interface-widget';
74-
export const ADAPTER_APP_CODE = 'aave-v3-interface-aps'; // Use this one for contract adapters so we have different dashboards
7573
export const COW_PARTNER_FEE = (tokenFromSymbol: string, tokenToSymbol: string) => ({
7674
volumeBps: getAssetGroup(tokenFromSymbol) == getAssetGroup(tokenToSymbol) ? 15 : 25,
7775
recipient: COW_EVM_RECIPIENT,

src/components/transactions/Swap/errors/shared/console.helpers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ function buildErrorPayload(state: SwapState, error: SwapError) {
3131
useFlashloan: state.useFlashloan ?? false,
3232
side: state.side,
3333
orderType: state.orderType,
34+
swapType: state.swapType,
3435
slippage: state.slippage,
3536
input: {
3637
token: state.sourceToken.symbol,

src/components/transactions/Swap/inputs/LimitOrderInputs.tsx

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -113,15 +113,23 @@ export const LimitOrderInputs = ({
113113
!state.error
114114
}
115115
onChange={swapState.handleInputChange}
116-
onClear={() =>
116+
onClear={() => {
117117
setState({
118118
inputAmount: '',
119119
debouncedInputAmount: '',
120120
inputAmountUSD: '',
121121
quoteRefreshPaused: true,
122122
quoteLastUpdatedAt: undefined,
123-
})
124-
}
123+
});
124+
if (state.outputAmount === '') {
125+
// Both reset to listen quotes
126+
setState({
127+
swapRate: undefined,
128+
quoteRefreshPaused: false,
129+
quoteLastUpdatedAt: undefined,
130+
});
131+
}
132+
}}
125133
usdValue={state.inputAmountUSD || '0'}
126134
onSelect={swapState.handleSelectedInputToken}
127135
selectedAsset={state.sourceToken}
@@ -230,15 +238,23 @@ export const LimitOrderInputs = ({
230238
onChange={(value) => {
231239
swapState.handleOutputChange(value);
232240
}}
233-
onClear={() =>
241+
onClear={() => {
234242
setState({
235243
outputAmount: '',
236244
debouncedOutputAmount: '',
237245
outputAmountUSD: '',
238246
quoteRefreshPaused: true,
239247
quoteLastUpdatedAt: undefined,
240-
})
241-
}
248+
});
249+
if (state.inputAmount === '') {
250+
// Both reset to listen quotes
251+
setState({
252+
swapRate: undefined,
253+
quoteRefreshPaused: false,
254+
quoteLastUpdatedAt: undefined,
255+
});
256+
}
257+
}}
242258
onSelect={swapState.handleSelectedOutputToken}
243259
disableInput={false}
244260
selectedAsset={state.destinationToken}
@@ -250,12 +266,12 @@ export const LimitOrderInputs = ({
250266

251267
<PriceInput
252268
originAsset={state.sourceToken}
269+
originAssetAmount={state.inputAmount}
270+
originAssetAmountUSD={state.inputAmountUSD}
253271
targetAsset={state.destinationToken}
272+
targetAssetAmount={state.outputAmount}
273+
targetAssetAmountUSD={state.outputAmountUSD}
254274
loading={state.ratesLoading}
255-
inputAmount={state.inputAmount}
256-
outputAmount={state.outputAmount}
257-
inputAmountUSD={state.inputAmountUSD}
258-
outputAmountUSD={state.outputAmountUSD}
259275
handleRateChange={swapState.handleRateChange}
260276
disabled={!state.swapRate?.srcSpotAmount || !state.swapRate?.destSpotAmount} // No initial rate set yet
261277
/>

src/components/transactions/Swap/inputs/SwapInputs.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,14 @@ export const SwapInputs = ({
153153
// User changed custom price, pause quote refresh in limit orders
154154
setState({ quoteRefreshPaused: true });
155155

156-
// When rate is changed, new output amount is calculated based on the input amount
157-
let newOutputAmount: string;
158-
if (rateFromAsset.addressToSwap === state.sourceToken.addressToSwap) {
159-
newOutputAmount = valueToBigNumber(state.inputAmount).multipliedBy(newRate).toString();
160-
} else {
161-
newOutputAmount = valueToBigNumber(state.outputAmount).dividedBy(newRate).toString();
162-
}
156+
// Normalize the rate to always be dest per 1 source, then recompute output deterministically
157+
const isBaseSource = rateFromAsset.addressToSwap === state.sourceToken.addressToSwap;
158+
const rateDestPerSrc = isBaseSource
159+
? valueToBigNumber(newRate)
160+
: valueToBigNumber(1).dividedBy(newRate);
161+
const newOutputAmount = valueToBigNumber(state.inputAmount || '0')
162+
.multipliedBy(rateDestPerSrc)
163+
.toString();
163164

164165
setState({
165166
quoteRefreshPaused: false,

0 commit comments

Comments
 (0)