Skip to content

Commit 783f227

Browse files
authored
feat: use url params as fallback for available_routes tracking event (#2848)
1 parent 7695d70 commit 783f227

1 file changed

Lines changed: 48 additions & 16 deletions

File tree

src/providers/WidgetTrackingProvider.tsx

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useUrlParams } from '@/hooks/useUrlParams';
12
import type { JumperEventData } from '@/utils/tracking/jumperTracking';
23
import 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';
1114
import { isEqual, omit } from 'lodash';
1215
import type { FC, PropsWithChildren } from 'react';
1316
import {
@@ -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

Comments
 (0)