Skip to content

Commit 97adddf

Browse files
committed
chore: refactor after review
1 parent 1dcbbbb commit 97adddf

1 file changed

Lines changed: 35 additions & 38 deletions

File tree

src/providers/WidgetTrackingProvider.tsx

Lines changed: 35 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import type {
99
SettingUpdated,
1010
} from '@lifi/widget';
1111
import { formatTokenPrice, useWidgetEvents } from '@lifi/widget';
12-
import { useToken } from 'src/hooks/useToken';
12+
import type { Address } from 'viem';
13+
import { useTokens } from 'src/hooks/useTokens';
1314
import { isEqual, omit } from 'lodash';
1415
import type { FC, PropsWithChildren } from 'react';
1516
import {
@@ -40,7 +41,6 @@ import {
4041
parseFormFieldChangedToTrackingData,
4142
parseWidgetSettingsToTrackingData,
4243
} from 'src/utils/tracking/widget';
43-
import type { Hex } from 'viem';
4444

4545
interface WidgetTrackingState {
4646
setDestinationChainTokenForTracking: (
@@ -129,21 +129,7 @@ export const WidgetTrackingProvider: FC<WidgetTrackingProviderProps> = ({
129129
const urlParamsRef = useRef(urlParams);
130130
urlParamsRef.current = urlParams;
131131

132-
const { token: sourceTokenData } = useToken(
133-
sourceChainToken.current?.chainId ??
134-
urlParams.sourceChainToken.chainId ??
135-
0,
136-
(sourceChainToken.current?.tokenAddress ??
137-
urlParams.sourceChainToken.token ??
138-
'0x') as Hex,
139-
{ extended: true },
140-
);
141-
142-
const fromAmountUSDFallback = useRef<number>(0);
143-
fromAmountUSDFallback.current =
144-
sourceTokenData?.priceUSD && urlParams.fromAmount
145-
? Number(formatTokenPrice(urlParams.fromAmount, sourceTokenData.priceUSD))
146-
: 0;
132+
const { getToken } = useTokens();
147133

148134
const posthogTracker = useMemo(() => {
149135
return makePosthogTracker({ trackTransaction, trackEvent });
@@ -178,11 +164,34 @@ export const WidgetTrackingProvider: FC<WidgetTrackingProviderProps> = ({
178164

179165
const availableRoutes = useCallback(
180166
(availableRoutes: Route[]) => {
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+
181182
const fromAmount =
182-
availableRoutes[0]?.fromAmount ?? urlParamsRef.current.fromAmount;
183-
const fromAmountUSD = availableRoutes[0]
184-
? Number(availableRoutes[0].fromAmountUSD)
185-
: fromAmountUSDFallback.current;
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;
186195

187196
if (currentFromAmount.current !== fromAmount) {
188197
currentFromAmount.current = fromAmount;
@@ -230,22 +239,10 @@ export const WidgetTrackingProvider: FC<WidgetTrackingProviderProps> = ({
230239
label: `routes_available`,
231240
enableAddressable: true,
232241
data: {
233-
[TrackingEventParameter.FromToken]:
234-
sourceChainToken.current?.tokenAddress ||
235-
urlParamsRef.current.sourceChainToken.token ||
236-
'',
237-
[TrackingEventParameter.FromChainId]:
238-
sourceChainToken.current?.chainId ||
239-
urlParamsRef.current.sourceChainToken.chainId ||
240-
'',
241-
[TrackingEventParameter.ToToken]:
242-
destinationChainToken.current?.tokenAddress ||
243-
urlParamsRef.current.destinationChainToken.token ||
244-
'',
245-
[TrackingEventParameter.ToChainId]:
246-
destinationChainToken.current?.chainId ||
247-
urlParamsRef.current.destinationChainToken.chainId ||
248-
'',
242+
[TrackingEventParameter.FromToken]: fromToken || '',
243+
[TrackingEventParameter.FromChainId]: fromChainId || '',
244+
[TrackingEventParameter.ToToken]: toToken || '',
245+
[TrackingEventParameter.ToChainId]: toChainId || '',
249246
[TrackingEventParameter.FromAmountUSD]: fromAmountUSD,
250247
[TrackingEventParameter.FromAmount]: fromAmount || '',
251248
[TrackingEventParameter.NbOfSteps]: availableRoutes.length,
@@ -257,7 +254,7 @@ export const WidgetTrackingProvider: FC<WidgetTrackingProviderProps> = ({
257254
isRoutesForCurrentDestinationTokenTracked.current = true;
258255
isRoutesForCurrentFromAmountTracked.current = true;
259256
},
260-
[trackEvent, trackingActionKeys.availableRoutes],
257+
[trackEvent, trackingActionKeys.availableRoutes, getToken],
261258
);
262259

263260
const routeExecutionStarted = useCallback(

0 commit comments

Comments
 (0)