@rozoai/intent-pay 0.0.29-beta.2 → 0.0.29-beta.4
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.
package/build/package.json.js
CHANGED
|
@@ -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,12 @@ 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
|
+
// Track the last executed parameters to prevent duplicate API calls
|
|
25
|
+
const lastExecutedParams = useRef(null);
|
|
26
|
+
// Track if we're currently making an API call to prevent concurrent requests
|
|
27
|
+
const isApiCallInProgress = useRef(false);
|
|
28
|
+
// Track the last successful result to avoid unnecessary state updates
|
|
29
|
+
const lastSuccessfulResult = useRef(null);
|
|
24
30
|
// Create stable array dependencies that only change when content actually changes
|
|
25
31
|
const stablePreferredChains = useMemo(() => {
|
|
26
32
|
if (!preferredChains || preferredChains.length === 0)
|
|
@@ -44,28 +50,106 @@ function useWalletPaymentOptions({ trpc, address, usdRequired, destChainId, pref
|
|
|
44
50
|
// Sort to ensure consistent comparison
|
|
45
51
|
return [...evmChains].sort((a, b) => a - b);
|
|
46
52
|
}, [evmChains]);
|
|
53
|
+
// Extract appId to avoid payParams object recreation causing re-runs
|
|
54
|
+
const stableAppId = useMemo(() => {
|
|
55
|
+
return payParams?.appId;
|
|
56
|
+
}, [payParams?.appId]);
|
|
57
|
+
// Use refs to store stable values and prevent unnecessary re-computations
|
|
58
|
+
const stableValuesRef = useRef({
|
|
59
|
+
address,
|
|
60
|
+
usdRequired,
|
|
61
|
+
destChainId,
|
|
62
|
+
isDepositFlow,
|
|
63
|
+
stablePreferredChains,
|
|
64
|
+
stablePreferredTokens,
|
|
65
|
+
stableEvmChains,
|
|
66
|
+
stableAppId,
|
|
67
|
+
});
|
|
68
|
+
// Update ref only when values actually change
|
|
69
|
+
const hasValuesChanged = useMemo(() => {
|
|
70
|
+
const current = stableValuesRef.current;
|
|
71
|
+
return (current.address !== address ||
|
|
72
|
+
current.usdRequired !== usdRequired ||
|
|
73
|
+
current.destChainId !== destChainId ||
|
|
74
|
+
current.isDepositFlow !== isDepositFlow ||
|
|
75
|
+
JSON.stringify(current.stablePreferredChains) !==
|
|
76
|
+
JSON.stringify(stablePreferredChains) ||
|
|
77
|
+
JSON.stringify(current.stablePreferredTokens) !==
|
|
78
|
+
JSON.stringify(stablePreferredTokens) ||
|
|
79
|
+
JSON.stringify(current.stableEvmChains) !==
|
|
80
|
+
JSON.stringify(stableEvmChains) ||
|
|
81
|
+
current.stableAppId !== stableAppId);
|
|
82
|
+
}, [
|
|
83
|
+
address,
|
|
84
|
+
usdRequired,
|
|
85
|
+
destChainId,
|
|
86
|
+
isDepositFlow,
|
|
87
|
+
stablePreferredChains,
|
|
88
|
+
stablePreferredTokens,
|
|
89
|
+
stableEvmChains,
|
|
90
|
+
stableAppId,
|
|
91
|
+
]);
|
|
92
|
+
// Update ref when values change
|
|
93
|
+
if (hasValuesChanged) {
|
|
94
|
+
stableValuesRef.current = {
|
|
95
|
+
address,
|
|
96
|
+
usdRequired,
|
|
97
|
+
destChainId,
|
|
98
|
+
isDepositFlow,
|
|
99
|
+
stablePreferredChains,
|
|
100
|
+
stablePreferredTokens,
|
|
101
|
+
stableEvmChains,
|
|
102
|
+
stableAppId,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
47
105
|
useEffect(() => {
|
|
48
106
|
const refreshWalletPaymentOptions = async () => {
|
|
49
|
-
|
|
107
|
+
const stableValues = stableValuesRef.current;
|
|
108
|
+
if (stableValues.address == null ||
|
|
109
|
+
stableValues.usdRequired == null ||
|
|
110
|
+
stableValues.destChainId == null)
|
|
111
|
+
return;
|
|
112
|
+
// Create a unique key for the current parameters to prevent duplicate calls
|
|
113
|
+
const paramsKey = JSON.stringify({
|
|
114
|
+
address: stableValues.address,
|
|
115
|
+
usdRequired: stableValues.usdRequired,
|
|
116
|
+
destChainId: stableValues.destChainId,
|
|
117
|
+
isDepositFlow: stableValues.isDepositFlow,
|
|
118
|
+
stablePreferredChains: stableValues.stablePreferredChains,
|
|
119
|
+
stablePreferredTokens: stableValues.stablePreferredTokens,
|
|
120
|
+
stableEvmChains: stableValues.stableEvmChains,
|
|
121
|
+
stableAppId: stableValues.stableAppId,
|
|
122
|
+
});
|
|
123
|
+
// Skip if we've already executed with these exact parameters
|
|
124
|
+
if (lastExecutedParams.current === paramsKey) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Skip if we're already making an API call to prevent concurrent requests
|
|
128
|
+
if (isApiCallInProgress.current) {
|
|
50
129
|
return;
|
|
130
|
+
}
|
|
131
|
+
lastExecutedParams.current = paramsKey;
|
|
132
|
+
isApiCallInProgress.current = true;
|
|
51
133
|
setOptions(null);
|
|
52
134
|
setIsLoading(true);
|
|
53
135
|
try {
|
|
54
136
|
const queryParams = {
|
|
55
|
-
payerAddress: address,
|
|
137
|
+
payerAddress: stableValues.address,
|
|
56
138
|
// API expects undefined for deposit flow.
|
|
57
|
-
usdRequired: isDepositFlow
|
|
58
|
-
|
|
139
|
+
usdRequired: stableValues.isDepositFlow
|
|
140
|
+
? undefined
|
|
141
|
+
: stableValues.usdRequired,
|
|
142
|
+
destChainId: stableValues.destChainId,
|
|
59
143
|
};
|
|
60
144
|
// Only include array parameters if they have values
|
|
61
|
-
if (stablePreferredChains) {
|
|
62
|
-
queryParams.preferredChains = stablePreferredChains;
|
|
145
|
+
if (stableValues.stablePreferredChains) {
|
|
146
|
+
queryParams.preferredChains = stableValues.stablePreferredChains;
|
|
63
147
|
}
|
|
64
|
-
if (stablePreferredTokens) {
|
|
65
|
-
queryParams.preferredTokens = stablePreferredTokens;
|
|
148
|
+
if (stableValues.stablePreferredTokens) {
|
|
149
|
+
queryParams.preferredTokens = stableValues.stablePreferredTokens;
|
|
66
150
|
}
|
|
67
|
-
if (stableEvmChains) {
|
|
68
|
-
queryParams.evmChains = stableEvmChains;
|
|
151
|
+
if (stableValues.stableEvmChains) {
|
|
152
|
+
queryParams.evmChains = stableValues.stableEvmChains;
|
|
69
153
|
}
|
|
70
154
|
const newOptions = await trpc.getWalletPaymentOptions.query(queryParams);
|
|
71
155
|
// SUPPORTED CHAINS: Only these chains are currently active in wallet payment options
|
|
@@ -75,9 +159,9 @@ function useWalletPaymentOptions({ trpc, address, usdRequired, destChainId, pref
|
|
|
75
159
|
// Each token corresponds to its respective chain above
|
|
76
160
|
const supportedTokens = [baseUSDC.token, polygonUSDC.token];
|
|
77
161
|
// Show BSC USDT for MugglePay apps or when BSC is preferred
|
|
78
|
-
const showBSCUSDT =
|
|
79
|
-
stablePreferredChains?.includes(bsc.chainId) ||
|
|
80
|
-
stableEvmChains?.includes(bsc.chainId);
|
|
162
|
+
const showBSCUSDT = stableValues.stableAppId?.includes("MP") ||
|
|
163
|
+
stableValues.stablePreferredChains?.includes(bsc.chainId) ||
|
|
164
|
+
stableValues.stableEvmChains?.includes(bsc.chainId);
|
|
81
165
|
if (showBSCUSDT) {
|
|
82
166
|
supportedChains.push(bsc);
|
|
83
167
|
supportedTokens.push(bscUSDT.token);
|
|
@@ -88,31 +172,31 @@ function useWalletPaymentOptions({ trpc, address, usdRequired, destChainId, pref
|
|
|
88
172
|
supportedTokens.includes(o.balance.token.token));
|
|
89
173
|
const filteredOptions = newOptions.filter(isSupported);
|
|
90
174
|
if (filteredOptions.length < newOptions.length) {
|
|
91
|
-
log(`[WALLET]: skipping ${newOptions.length - filteredOptions.length} unsupported-chain balances on ${address}`);
|
|
175
|
+
log(`[WALLET]: skipping ${newOptions.length - filteredOptions.length} unsupported-chain balances on ${stableValues.address}`);
|
|
176
|
+
}
|
|
177
|
+
// Only update state if the result is actually different from the last successful result
|
|
178
|
+
const resultKey = JSON.stringify(filteredOptions);
|
|
179
|
+
const lastResultKey = JSON.stringify(lastSuccessfulResult.current);
|
|
180
|
+
if (resultKey !== lastResultKey) {
|
|
181
|
+
lastSuccessfulResult.current = filteredOptions;
|
|
182
|
+
setOptions(filteredOptions);
|
|
92
183
|
}
|
|
93
|
-
setOptions(filteredOptions);
|
|
94
184
|
}
|
|
95
185
|
catch (error) {
|
|
96
186
|
console.error(error);
|
|
97
187
|
}
|
|
98
188
|
finally {
|
|
189
|
+
isApiCallInProgress.current = false;
|
|
99
190
|
setIsLoading(false);
|
|
100
191
|
}
|
|
101
192
|
};
|
|
102
|
-
|
|
193
|
+
const currentStableValues = stableValuesRef.current;
|
|
194
|
+
if (currentStableValues.address != null &&
|
|
195
|
+
currentStableValues.usdRequired != null &&
|
|
196
|
+
currentStableValues.destChainId != null) {
|
|
103
197
|
refreshWalletPaymentOptions();
|
|
104
198
|
}
|
|
105
|
-
}, [
|
|
106
|
-
address,
|
|
107
|
-
usdRequired,
|
|
108
|
-
destChainId,
|
|
109
|
-
isDepositFlow,
|
|
110
|
-
stablePreferredChains,
|
|
111
|
-
stablePreferredTokens,
|
|
112
|
-
stableEvmChains,
|
|
113
|
-
trpc,
|
|
114
|
-
payParams,
|
|
115
|
-
]);
|
|
199
|
+
}, [hasValuesChanged, trpc, log]);
|
|
116
200
|
return {
|
|
117
201
|
options,
|
|
118
202
|
isLoading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWalletPaymentOptions.js","sources":["../../../src/hooks/useWalletPaymentOptions.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAaA;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,uBAAuB,CAAC,EACtC,IAAI,EACJ,OAAO,EACP,WAAW,EACX,WAAW,EACX,eAAe,EACf,eAAe,EACf,SAAS,EACT,aAAa,EACb,SAAS,EACT,GAAG,GAYJ,EAAA;IACC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA+B,IAAI,CAAC,CAAC;IAC3E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;AAGlD,IAAA,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAK;AACzC,QAAA,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,SAAS,CAAC;;AAEvE,QAAA,OAAO,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,KAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAEtB,IAAA,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAK;AACzC,QAAA,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,SAAS,CAAC;;AAEvE,QAAA,OAAO,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACxC,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;AAAE,gBAAA,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YAClD,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;AACL,KAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAEtB,IAAA,MAAM,eAAe,GAAG,OAAO,CAAC,MAAK;AACnC,QAAA,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,SAAS,CAAC;;AAE3D,QAAA,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useWalletPaymentOptions.js","sources":["../../../src/hooks/useWalletPaymentOptions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|