@rozoai/intent-pay 0.0.29-beta.2 → 0.0.29-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  var name = "@rozoai/intent-pay";
2
- var version = "0.0.29-beta.2";
2
+ var version = "0.0.29-beta.3";
3
3
  var author = "RozoAI";
4
4
  var homepage = "https://github.com/RozoAI/intent-pay";
5
5
  var license = "BSD-2-Clause";
@@ -1,5 +1,5 @@
1
1
  import { base, polygon, baseUSDC, polygonUSDC, bsc, bscUSDT } from '@rozoai/intent-common';
2
- import { useState, useMemo, useEffect } from 'react';
2
+ import { useState, useRef, useMemo, useEffect } from 'react';
3
3
 
4
4
  /**
5
5
  * Wallet payment options. User picks one.
@@ -21,6 +21,8 @@ import { useState, useMemo, useEffect } from 'react';
21
21
  function useWalletPaymentOptions({ trpc, address, usdRequired, destChainId, preferredChains, preferredTokens, evmChains, isDepositFlow, payParams, log, }) {
22
22
  const [options, setOptions] = useState(null);
23
23
  const [isLoading, setIsLoading] = useState(false);
24
+ const requestIdRef = useRef(0);
25
+ const abortControllerRef = useRef(null);
24
26
  // Create stable array dependencies that only change when content actually changes
25
27
  const stablePreferredChains = useMemo(() => {
26
28
  if (!preferredChains || preferredChains.length === 0)
@@ -48,6 +50,15 @@ function useWalletPaymentOptions({ trpc, address, usdRequired, destChainId, pref
48
50
  const refreshWalletPaymentOptions = async () => {
49
51
  if (address == null || usdRequired == null || destChainId == null)
50
52
  return;
53
+ // Cancel any in-flight requests
54
+ if (abortControllerRef.current) {
55
+ abortControllerRef.current.abort();
56
+ }
57
+ // Create new abort controller for this request
58
+ const abortController = new AbortController();
59
+ abortControllerRef.current = abortController;
60
+ // Increment request ID
61
+ const currentRequestId = ++requestIdRef.current;
51
62
  setOptions(null);
52
63
  setIsLoading(true);
53
64
  try {
@@ -68,40 +79,54 @@ function useWalletPaymentOptions({ trpc, address, usdRequired, destChainId, pref
68
79
  queryParams.evmChains = stableEvmChains;
69
80
  }
70
81
  const newOptions = await trpc.getWalletPaymentOptions.query(queryParams);
71
- // SUPPORTED CHAINS: Only these chains are currently active in wallet payment options
72
- // To add more chains, add them to both arrays below and ensure they're defined in pay-common
73
- const supportedChains = [base, polygon];
74
- // SUPPORTED TOKENS: Only these specific tokens are currently active
75
- // Each token corresponds to its respective chain above
76
- const supportedTokens = [baseUSDC.token, polygonUSDC.token];
77
- // Show BSC USDT for MugglePay apps or when BSC is preferred
78
- const showBSCUSDT = payParams?.appId?.includes("MP") ||
79
- stablePreferredChains?.includes(bsc.chainId) ||
80
- stableEvmChains?.includes(bsc.chainId);
81
- if (showBSCUSDT) {
82
- supportedChains.push(bsc);
83
- supportedTokens.push(bscUSDT.token);
84
- }
85
- // Filter out chains/tokens we don't support yet in wallet payment options
86
- // API may return more options, but we only show these filtered ones to users
87
- const isSupported = (o) => supportedChains.some((c) => c.chainId === o.balance.token.chainId &&
88
- supportedTokens.includes(o.balance.token.token));
89
- const filteredOptions = newOptions.filter(isSupported);
90
- if (filteredOptions.length < newOptions.length) {
91
- log(`[WALLET]: skipping ${newOptions.length - filteredOptions.length} unsupported-chain balances on ${address}`);
82
+ // Only update state if this is still the latest request
83
+ if (currentRequestId === requestIdRef.current &&
84
+ !abortController.signal.aborted) {
85
+ // SUPPORTED CHAINS: Only these chains are currently active in wallet payment options
86
+ // To add more chains, add them to both arrays below and ensure they're defined in pay-common
87
+ const supportedChains = [base, polygon];
88
+ // SUPPORTED TOKENS: Only these specific tokens are currently active
89
+ // Each token corresponds to its respective chain above
90
+ const supportedTokens = [baseUSDC.token, polygonUSDC.token];
91
+ // Show BSC USDT for MugglePay apps or when BSC is preferred
92
+ const showBSCUSDT = payParams?.appId?.includes("MP") ||
93
+ stablePreferredChains?.includes(bsc.chainId) ||
94
+ stableEvmChains?.includes(bsc.chainId);
95
+ if (showBSCUSDT) {
96
+ supportedChains.push(bsc);
97
+ supportedTokens.push(bscUSDT.token);
98
+ }
99
+ // Filter out chains/tokens we don't support yet in wallet payment options
100
+ // API may return more options, but we only show these filtered ones to users
101
+ const isSupported = (o) => supportedChains.some((c) => c.chainId === o.balance.token.chainId &&
102
+ supportedTokens.includes(o.balance.token.token));
103
+ const filteredOptions = newOptions.filter(isSupported);
104
+ if (filteredOptions.length < newOptions.length) {
105
+ log(`[WALLET]: skipping ${newOptions.length - filteredOptions.length} unsupported-chain balances on ${address}`);
106
+ }
107
+ setOptions(filteredOptions);
92
108
  }
93
- setOptions(filteredOptions);
94
109
  }
95
110
  catch (error) {
96
111
  console.error(error);
97
112
  }
98
113
  finally {
99
- setIsLoading(false);
114
+ // Only update loading state if this is still the latest request
115
+ if (currentRequestId === requestIdRef.current &&
116
+ !abortController.signal.aborted) {
117
+ setIsLoading(false);
118
+ }
100
119
  }
101
120
  };
102
121
  if (address != null && usdRequired != null && destChainId != null) {
103
122
  refreshWalletPaymentOptions();
104
123
  }
124
+ // Cleanup function to abort requests on unmount
125
+ return () => {
126
+ if (abortControllerRef.current) {
127
+ abortControllerRef.current.abort();
128
+ }
129
+ };
105
130
  }, [
106
131
  address,
107
132
  usdRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletPaymentOptions.js","sources":["../../../src/hooks/useWalletPaymentOptions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useWalletPaymentOptions.js","sources":["../../../src/hooks/useWalletPaymentOptions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rozoai/intent-pay",
3
3
  "private": false,
4
- "version": "0.0.29-beta.2",
4
+ "version": "0.0.29-beta.3",
5
5
  "author": "RozoAI",
6
6
  "homepage": "https://github.com/RozoAI/intent-pay",
7
7
  "license": "BSD-2-Clause",