1
1
'use client'
2
2
3
+ import { ExclamationCircleIcon } from '@heroicons/react/20/solid'
3
4
import { useAtom } from 'jotai'
4
- import { useCallback , useEffect } from 'react'
5
+ import { useCallback , useEffect , useMemo } from 'react'
5
6
6
7
import { TradeInputSelector } from '@/app/leverage/components/leverage-widget/trade-input-selector'
7
8
import { supportedNetworks } from '@/app/leverage/constants'
@@ -50,6 +51,7 @@ export function LeverageWidget() {
50
51
onSelectOutputToken,
51
52
outputToken,
52
53
reset,
54
+ refetchQuote,
53
55
supportedLeverageTypes,
54
56
toggleIsMinting,
55
57
} = useLeverageToken ( )
@@ -99,6 +101,11 @@ export function LeverageWidget() {
99
101
}
100
102
} , [ tradeState , reset , resetData , sendTradeEvent ] )
101
103
104
+ const hasFetchingError = useMemo (
105
+ ( ) => tradeState . matches ( 'quoteNotFound' ) ,
106
+ [ tradeState ] ,
107
+ )
108
+
102
109
return (
103
110
< div
104
111
className = 'flex w-full flex-col gap-4 rounded-lg border border-white/15 bg-zinc-900 px-4 pb-5 pt-4'
@@ -140,10 +147,20 @@ export function LeverageWidget() {
140
147
selectedOutputToken = { outputToken }
141
148
onSelectToken = { onOpenSelectOutputToken }
142
149
/>
150
+ { hasFetchingError && (
151
+ < div className = 'flex items-center justify-center gap-2 text-sm text-red-400' >
152
+ < div className = 'flex items-center gap-1' >
153
+ < ExclamationCircleIcon className = 'size-5' />
154
+ < h3 className = 'font-semibold' > Quote Error</ h3 >
155
+ { ':' }
156
+ </ div >
157
+ < p > { tradeState . context . quoteError } </ p >
158
+ </ div >
159
+ ) }
143
160
< Summary />
144
161
< SmartTradeButton
145
162
contract = { contract ?? '' }
146
- hasFetchingError = { false }
163
+ hasFetchingError = { hasFetchingError }
147
164
hasInsufficientFunds = { hasInsufficientFunds }
148
165
hiddenWarnings = { hiddenLeverageWarnings }
149
166
inputTokenAmount = { inputTokenAmount }
@@ -157,7 +174,7 @@ export function LeverageWidget() {
157
174
[ TradeButtonState . default ] : 'Review Transaction' ,
158
175
} }
159
176
onOpenTransactionReview = { ( ) => sendTradeEvent ( { type : 'REVIEW' } ) }
160
- onRefetchQuote = { ( ) => { } }
177
+ onRefetchQuote = { refetchQuote }
161
178
/>
162
179
< SelectTokenModal
163
180
isDarkMode = { true }
0 commit comments