forked from cowprotocol/cowswap
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.tsx
More file actions
63 lines (52 loc) · 2.11 KB
/
index.tsx
File metadata and controls
63 lines (52 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import { JSX, useEffect } from 'react'
import { useTokenSelectorConsentFlow } from 'modules/rwa'
import { SelectTokenWidget, useSelectTokenWidgetState } from 'modules/tokensList'
import { useSetShouldUseAutoSlippage } from 'modules/tradeSlippage'
import * as styledEl from './styled'
import { TradeWidgetForm } from './TradeWidgetForm'
import { TradeWidgetModals } from './TradeWidgetModals'
import { TradeWidgetUpdaters } from './TradeWidgetUpdaters'
import { TradeWidgetProps } from './types'
import { useIsTokenSelectWide } from '../../hooks/useIsTokenSelectWide'
export function TradeWidget(props: TradeWidgetProps): JSX.Element {
const { id, slots, params, confirmModal, genericModal } = props
const {
disableQuotePolling = false,
disableNativeSelling = false,
disableSuggestedSlippageApi = false,
allowSwapSameToken = false,
enableSmartSlippage,
} = params
const { open: isTokenSelectOpen } = useSelectTokenWidgetState()
const isTokenSelectWide = useIsTokenSelectWide()
const consentFlow = useTokenSelectorConsentFlow()
const selectTokenWidgetNode = slots.selectTokenWidget ?? <SelectTokenWidget customFlows={consentFlow} />
const setShouldUseAutoSlippage = useSetShouldUseAutoSlippage()
useEffect(() => {
setShouldUseAutoSlippage(enableSmartSlippage ?? false)
}, [enableSmartSlippage, setShouldUseAutoSlippage])
const modals = (
<TradeWidgetModals
confirmModal={confirmModal}
genericModal={genericModal}
renderFallback={() => <TradeWidgetForm {...props} />}
/>
)
return (
<>
<styledEl.Container id={id} isTokenSelectOpen={isTokenSelectOpen} isTokenSelectWide={isTokenSelectWide}>
<TradeWidgetUpdaters
allowSwapSameToken={allowSwapSameToken}
disableQuotePolling={disableQuotePolling}
disableNativeSelling={disableNativeSelling}
disableSuggestedSlippageApi={disableSuggestedSlippageApi}
onChangeRecipient={props.actions.onChangeRecipient}
>
{slots.updaters}
</TradeWidgetUpdaters>
{modals}
</styledEl.Container>
{selectTokenWidgetNode}
</>
)
}