1+ import { useUrlParams } from '@/hooks/useUrlParams' ;
12import type { JumperEventData } from '@/utils/tracking/jumperTracking' ;
23import type {
34 ChainTokenSelected ,
@@ -7,7 +8,9 @@ import type {
78 RouteHighValueLossUpdate ,
89 SettingUpdated ,
910} from '@lifi/widget' ;
10- import { useWidgetEvents } from '@lifi/widget' ;
11+ import { formatTokenPrice , useWidgetEvents } from '@lifi/widget' ;
12+ import type { Address } from 'viem' ;
13+ import { useTokens } from 'src/hooks/useTokens' ;
1114import { isEqual , omit } from 'lodash' ;
1215import type { FC , PropsWithChildren } from 'react' ;
1316import {
@@ -122,6 +125,12 @@ export const WidgetTrackingProvider: FC<WidgetTrackingProviderProps> = ({
122125 const trackedRoutesData = useRef < Record < string , TrackTransactionDataProps > > (
123126 { } ,
124127 ) ;
128+ const urlParams = useUrlParams ( ) ;
129+ const urlParamsRef = useRef ( urlParams ) ;
130+ urlParamsRef . current = urlParams ;
131+
132+ const { getToken } = useTokens ( ) ;
133+
125134 const posthogTracker = useMemo ( ( ) => {
126135 return makePosthogTracker ( { trackTransaction, trackEvent } ) ;
127136 } , [ trackTransaction , trackEvent ] ) ;
@@ -155,8 +164,37 @@ export const WidgetTrackingProvider: FC<WidgetTrackingProviderProps> = ({
155164
156165 const availableRoutes = useCallback (
157166 ( availableRoutes : Route [ ] ) => {
158- if ( currentFromAmount . current !== availableRoutes [ 0 ] ?. fromAmount ) {
159- currentFromAmount . current = availableRoutes [ 0 ] ?. fromAmount ;
167+ const firstRoute = availableRoutes [ 0 ] ;
168+
169+ const fromToken =
170+ sourceChainToken . current ?. tokenAddress ??
171+ urlParamsRef . current . sourceChainToken . token ;
172+ const fromChainId =
173+ sourceChainToken . current ?. chainId ??
174+ urlParamsRef . current . sourceChainToken . chainId ;
175+ const toToken =
176+ destinationChainToken . current ?. tokenAddress ??
177+ urlParamsRef . current . destinationChainToken . token ;
178+ const toChainId =
179+ destinationChainToken . current ?. chainId ??
180+ urlParamsRef . current . destinationChainToken . chainId ;
181+
182+ const fromAmount =
183+ firstRoute ?. fromAmount ?? urlParamsRef . current . fromAmount ;
184+
185+ const fallbackToken =
186+ fromChainId && fromToken
187+ ? getToken ( fromChainId , fromToken as Address )
188+ : undefined ;
189+
190+ const fromAmountUSD = firstRoute
191+ ? Number ( firstRoute . fromAmountUSD )
192+ : fallbackToken ?. priceUSD && fromAmount
193+ ? Number ( formatTokenPrice ( fromAmount , fallbackToken . priceUSD ) )
194+ : 0 ;
195+
196+ if ( currentFromAmount . current !== fromAmount ) {
197+ currentFromAmount . current = fromAmount ;
160198 isRoutesForCurrentFromAmountTracked . current = false ;
161199 }
162200
@@ -201,18 +239,12 @@ export const WidgetTrackingProvider: FC<WidgetTrackingProviderProps> = ({
201239 label : `routes_available` ,
202240 enableAddressable : true ,
203241 data : {
204- [ TrackingEventParameter . FromToken ] :
205- sourceChainToken . current ?. tokenAddress || '' ,
206- [ TrackingEventParameter . FromChainId ] :
207- sourceChainToken . current ?. chainId || '' ,
208- [ TrackingEventParameter . ToToken ] :
209- destinationChainToken . current ?. tokenAddress || '' ,
210- [ TrackingEventParameter . ToChainId ] :
211- destinationChainToken . current ?. chainId || '' ,
212- [ TrackingEventParameter . FromAmountUSD ] : Number (
213- availableRoutes ?. [ 0 ] ?. fromAmountUSD ,
214- ) ,
215- [ TrackingEventParameter . FromAmount ] : availableRoutes ?. [ 0 ] ?. fromAmount ,
242+ [ TrackingEventParameter . FromToken ] : fromToken || '' ,
243+ [ TrackingEventParameter . FromChainId ] : fromChainId || '' ,
244+ [ TrackingEventParameter . ToToken ] : toToken || '' ,
245+ [ TrackingEventParameter . ToChainId ] : toChainId || '' ,
246+ [ TrackingEventParameter . FromAmountUSD ] : fromAmountUSD ,
247+ [ TrackingEventParameter . FromAmount ] : fromAmount || '' ,
216248 [ TrackingEventParameter . NbOfSteps ] : availableRoutes . length ,
217249 [ TrackingEventParameter . Routes ] : transformedRoutes ,
218250 } ,
@@ -222,7 +254,7 @@ export const WidgetTrackingProvider: FC<WidgetTrackingProviderProps> = ({
222254 isRoutesForCurrentDestinationTokenTracked . current = true ;
223255 isRoutesForCurrentFromAmountTracked . current = true ;
224256 } ,
225- [ trackEvent , trackingActionKeys . availableRoutes ] ,
257+ [ trackEvent , trackingActionKeys . availableRoutes , getToken ] ,
226258 ) ;
227259
228260 const routeExecutionStarted = useCallback (
0 commit comments