@latticexyz/entrykit 2.2.22-daa34f06d070200c1aaf0bba78ba9f2dd8662a76 → 2.2.22-f4bb5b5d7d9abbbea0fc57591b58dbd94c85d3aa
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.
|
@@ -188,21 +188,168 @@ function userOpExecutor({ executor }) {
|
|
|
188
188
|
};
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
+
// src/quarry/transports/methods/getUserOperationReceipt.ts
|
|
192
|
+
import {
|
|
193
|
+
decodeEventLog,
|
|
194
|
+
encodeEventTopics,
|
|
195
|
+
numberToHex as numberToHex2,
|
|
196
|
+
parseEventLogs as parseEventLogs2,
|
|
197
|
+
zeroAddress
|
|
198
|
+
} from "viem";
|
|
199
|
+
import { entryPoint07Abi as entryPoint07Abi2 } from "viem/account-abstraction";
|
|
200
|
+
var userOperationRevertReasonAbi = [
|
|
201
|
+
entryPoint07Abi2.find(
|
|
202
|
+
(item) => item.type === "event" && item.name === "UserOperationRevertReason"
|
|
203
|
+
)
|
|
204
|
+
];
|
|
205
|
+
var userOperationEventTopic = encodeEventTopics({
|
|
206
|
+
abi: entryPoint07Abi2,
|
|
207
|
+
eventName: "UserOperationEvent"
|
|
208
|
+
});
|
|
209
|
+
function getUserOperationReceipt(userOpHash, receipt) {
|
|
210
|
+
const userOperationRevertReasonTopicEvent = encodeEventTopics({
|
|
211
|
+
abi: userOperationRevertReasonAbi
|
|
212
|
+
})[0];
|
|
213
|
+
let entryPoint = zeroAddress;
|
|
214
|
+
let revertReason = void 0;
|
|
215
|
+
let startIndex = -1;
|
|
216
|
+
let endIndex = -1;
|
|
217
|
+
receipt.logs.forEach((log, index) => {
|
|
218
|
+
if (log?.topics[0] === userOperationEventTopic[0]) {
|
|
219
|
+
if (log.topics[1] === userOpHash) {
|
|
220
|
+
endIndex = index;
|
|
221
|
+
entryPoint = log.address;
|
|
222
|
+
} else if (endIndex === -1) {
|
|
223
|
+
startIndex = index;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (log?.topics[0] === userOperationRevertReasonTopicEvent) {
|
|
227
|
+
if (log.topics[1] === userOpHash) {
|
|
228
|
+
const decodedLog = decodeEventLog({
|
|
229
|
+
abi: userOperationRevertReasonAbi,
|
|
230
|
+
data: log.data,
|
|
231
|
+
topics: log.topics
|
|
232
|
+
});
|
|
233
|
+
revertReason = decodedLog.args.revertReason;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
if (endIndex === -1) {
|
|
238
|
+
throw new Error("fatal: no UserOperationEvent in logs");
|
|
239
|
+
}
|
|
240
|
+
const logs = receipt.logs.slice(startIndex + 1, endIndex);
|
|
241
|
+
const userOperationEvent = parseEventLogs2({
|
|
242
|
+
abi: entryPoint07Abi2,
|
|
243
|
+
eventName: "UserOperationEvent",
|
|
244
|
+
args: {
|
|
245
|
+
userOpHash
|
|
246
|
+
},
|
|
247
|
+
logs: receipt.logs
|
|
248
|
+
})[0];
|
|
249
|
+
let paymaster = userOperationEvent.args.paymaster;
|
|
250
|
+
paymaster = paymaster === zeroAddress ? void 0 : paymaster;
|
|
251
|
+
return {
|
|
252
|
+
userOpHash,
|
|
253
|
+
entryPoint,
|
|
254
|
+
sender: userOperationEvent.args.sender,
|
|
255
|
+
nonce: numberToHex2(userOperationEvent.args.nonce),
|
|
256
|
+
paymaster,
|
|
257
|
+
actualGasUsed: numberToHex2(userOperationEvent.args.actualGasUsed),
|
|
258
|
+
actualGasCost: numberToHex2(userOperationEvent.args.actualGasCost),
|
|
259
|
+
success: userOperationEvent.args.success,
|
|
260
|
+
reason: revertReason,
|
|
261
|
+
logs,
|
|
262
|
+
receipt
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// src/quarry/transports/wiresaw.ts
|
|
267
|
+
function wiresaw(transport) {
|
|
268
|
+
return (opts) => {
|
|
269
|
+
const { request: originalRequest, ...rest } = transport.wiresaw(opts);
|
|
270
|
+
let chainId = null;
|
|
271
|
+
const transactionHashes = {};
|
|
272
|
+
const transactionReceipts = {};
|
|
273
|
+
return {
|
|
274
|
+
...rest,
|
|
275
|
+
async request(req) {
|
|
276
|
+
if (req.method === "eth_chainId") {
|
|
277
|
+
if (chainId != null) return chainId;
|
|
278
|
+
return chainId = await originalRequest(req);
|
|
279
|
+
}
|
|
280
|
+
if (req.method === "eth_estimateGas") {
|
|
281
|
+
return originalRequest({ ...req, method: "wiresaw_estimateGas" });
|
|
282
|
+
}
|
|
283
|
+
if (req.method === "eth_call") {
|
|
284
|
+
return originalRequest({ ...req, method: "wiresaw_call" });
|
|
285
|
+
}
|
|
286
|
+
if (req.method === "eth_getTransactionCount") {
|
|
287
|
+
return originalRequest({ ...req, method: "wiresaw_getTransactionCount" });
|
|
288
|
+
}
|
|
289
|
+
if (req.method === "eth_getTransactionReceipt") {
|
|
290
|
+
const transactionHash = req.params[0];
|
|
291
|
+
const receipt = transactionReceipts[transactionHash] ?? await originalRequest(req);
|
|
292
|
+
transactionReceipts[transactionHash] ??= receipt;
|
|
293
|
+
return receipt;
|
|
294
|
+
}
|
|
295
|
+
if (req.method === "eth_sendUserOperation") {
|
|
296
|
+
const { userOpHash, txHash } = await originalRequest({
|
|
297
|
+
...req,
|
|
298
|
+
method: "wiresaw_sendUserOperation"
|
|
299
|
+
});
|
|
300
|
+
transactionHashes[userOpHash] = txHash;
|
|
301
|
+
return userOpHash;
|
|
302
|
+
}
|
|
303
|
+
if (req.method === "eth_getUserOperationReceipt") {
|
|
304
|
+
const userOpHash = req.params[0];
|
|
305
|
+
const knownTransactionHash = transactionHashes[userOpHash];
|
|
306
|
+
if (knownTransactionHash) {
|
|
307
|
+
const transactionReceipt = transactionReceipts[knownTransactionHash] ?? await originalRequest({
|
|
308
|
+
...req,
|
|
309
|
+
params: [knownTransactionHash],
|
|
310
|
+
method: "wiresaw_getTransactionReceipt"
|
|
311
|
+
});
|
|
312
|
+
transactionReceipts[knownTransactionHash] ??= transactionReceipt;
|
|
313
|
+
return transactionReceipt && getUserOperationReceipt(userOpHash, transactionReceipt);
|
|
314
|
+
}
|
|
315
|
+
const { request: fallbackRequest } = transport.fallbackBundler(opts);
|
|
316
|
+
return fallbackRequest(req);
|
|
317
|
+
}
|
|
318
|
+
if (req.method === "eth_estimateUserOperationGas") {
|
|
319
|
+
const { request: fallbackRequest } = transport.fallbackBundler(opts);
|
|
320
|
+
return fallbackRequest(req);
|
|
321
|
+
}
|
|
322
|
+
return originalRequest(req);
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
|
|
191
328
|
// src/getBundlerTransport.ts
|
|
192
329
|
function getBundlerTransport(chain) {
|
|
193
330
|
const bundlerHttpUrl = chain.rpcUrls.bundler?.http[0];
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
if (
|
|
203
|
-
|
|
331
|
+
const wiresawWebSocketUrl = chain.rpcUrls.wiresaw?.webSocket?.[0];
|
|
332
|
+
if (wiresawWebSocketUrl) {
|
|
333
|
+
return wiresaw({ wiresaw: webSocket(wiresawWebSocketUrl), fallbackBundler: http(bundlerHttpUrl) });
|
|
334
|
+
}
|
|
335
|
+
const wiresawHttpUrl = chain.rpcUrls.wiresaw?.http[0];
|
|
336
|
+
if (wiresawHttpUrl) {
|
|
337
|
+
return wiresaw({ wiresaw: http(wiresawHttpUrl), fallbackBundler: http(bundlerHttpUrl) });
|
|
338
|
+
}
|
|
339
|
+
if (bundlerHttpUrl) {
|
|
340
|
+
return http(bundlerHttpUrl);
|
|
341
|
+
}
|
|
342
|
+
if (chain.id === 31337) {
|
|
343
|
+
return userOpExecutor({
|
|
344
|
+
executor: createClient({
|
|
345
|
+
chain,
|
|
346
|
+
transport: fallback([webSocket(), http()]),
|
|
347
|
+
account: privateKeyToAccount(keccak256(stringToHex("local user op executor"))),
|
|
348
|
+
pollingInterval: 10
|
|
349
|
+
}).extend(transactionQueue())
|
|
350
|
+
});
|
|
204
351
|
}
|
|
205
|
-
|
|
352
|
+
throw new Error(`Chain ${chain.id} config did not include a bundler RPC URL.`);
|
|
206
353
|
}
|
|
207
354
|
|
|
208
355
|
// src/EntryKitConfigProvider.tsx
|
|
@@ -550,7 +697,7 @@ function ConnectWallet() {
|
|
|
550
697
|
}
|
|
551
698
|
|
|
552
699
|
// src/onboarding/ConnectedSteps.tsx
|
|
553
|
-
import { useEffect as
|
|
700
|
+
import { useEffect as useEffect15, useMemo as useMemo4, useRef as useRef4, useState as useState6 } from "react";
|
|
554
701
|
import { twMerge as twMerge17 } from "tailwind-merge";
|
|
555
702
|
|
|
556
703
|
// src/onboarding/usePrerequisites.ts
|
|
@@ -585,7 +732,7 @@ import { useClient } from "wagmi";
|
|
|
585
732
|
import { queryOptions, skipToken, useQuery as useQuery2 } from "@tanstack/react-query";
|
|
586
733
|
|
|
587
734
|
// src/quarry/getAllowance.ts
|
|
588
|
-
import { numberToHex as
|
|
735
|
+
import { numberToHex as numberToHex3 } from "viem";
|
|
589
736
|
|
|
590
737
|
// src/quarry/common.ts
|
|
591
738
|
import { defineStore } from "@latticexyz/store";
|
|
@@ -689,7 +836,7 @@ async function setAllowanceSlot({ client, userAddress, allowance }) {
|
|
|
689
836
|
{
|
|
690
837
|
address: paymaster.address,
|
|
691
838
|
index: slot,
|
|
692
|
-
value:
|
|
839
|
+
value: numberToHex3(allowance, { size: 32 })
|
|
693
840
|
}
|
|
694
841
|
);
|
|
695
842
|
}
|
|
@@ -927,13 +1074,13 @@ function getPrequisitesQueryOptions({
|
|
|
927
1074
|
const hasAllowance = allowance == null || allowance > 0n;
|
|
928
1075
|
const isSpender = spender == null ? true : spender;
|
|
929
1076
|
const hasGasBalance = sessionBalance == null || sessionBalance.value > 0n;
|
|
930
|
-
const
|
|
1077
|
+
const hasQuarryGasBalance = quarryBalance == null || quarryBalance > 0n;
|
|
931
1078
|
return {
|
|
932
1079
|
sessionAddress,
|
|
933
1080
|
hasAllowance,
|
|
934
1081
|
isSpender,
|
|
935
1082
|
hasGasBalance,
|
|
936
|
-
|
|
1083
|
+
hasQuarryGasBalance,
|
|
937
1084
|
hasDelegation,
|
|
938
1085
|
// we intentionally don't enforce an allowance/gas balance here
|
|
939
1086
|
complete: isSpender && hasDelegation
|
|
@@ -1235,6 +1382,9 @@ function Allowance({ isActive, isExpanded, userAddress }) {
|
|
|
1235
1382
|
] });
|
|
1236
1383
|
}
|
|
1237
1384
|
|
|
1385
|
+
// src/onboarding/Session.tsx
|
|
1386
|
+
import { useEffect as useEffect7 } from "react";
|
|
1387
|
+
|
|
1238
1388
|
// src/onboarding/useSetupSession.ts
|
|
1239
1389
|
import { encodeFunctionData } from "viem";
|
|
1240
1390
|
import { useMutation as useMutation2, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
@@ -1431,9 +1581,6 @@ function useSetupSession({ userClient }) {
|
|
|
1431
1581
|
});
|
|
1432
1582
|
}
|
|
1433
1583
|
|
|
1434
|
-
// src/onboarding/Session.tsx
|
|
1435
|
-
import { useEffect as useEffect7 } from "react";
|
|
1436
|
-
|
|
1437
1584
|
// src/useSessionClient.ts
|
|
1438
1585
|
import { useClient as useClient9 } from "wagmi";
|
|
1439
1586
|
import {
|
|
@@ -1562,9 +1709,11 @@ function Session({ isActive, isExpanded, userClient, registerSpender, registerDe
|
|
|
1562
1709
|
const sessionClient = useShowQueryError(useSessionClient(userClient.account.address));
|
|
1563
1710
|
const setup = useShowMutationError(useSetupSession({ userClient }));
|
|
1564
1711
|
const hasSession = !registerDelegation && !registerDelegation;
|
|
1712
|
+
const { data: prerequisites } = usePrerequisites(userClient.account.address);
|
|
1713
|
+
const { hasAllowance, hasGasBalance, hasQuarryGasBalance } = prerequisites ?? {};
|
|
1565
1714
|
useEffect7(() => {
|
|
1566
1715
|
const timer = setTimeout(() => {
|
|
1567
|
-
if (isActive && setup.status === "idle" && sessionClient.data && !hasSession) {
|
|
1716
|
+
if (isActive && setup.status === "idle" && sessionClient.data && !hasSession && (hasAllowance || hasGasBalance || hasQuarryGasBalance)) {
|
|
1568
1717
|
setup.mutate({
|
|
1569
1718
|
sessionClient: sessionClient.data,
|
|
1570
1719
|
registerSpender,
|
|
@@ -1573,7 +1722,17 @@ function Session({ isActive, isExpanded, userClient, registerSpender, registerDe
|
|
|
1573
1722
|
}
|
|
1574
1723
|
});
|
|
1575
1724
|
return () => clearTimeout(timer);
|
|
1576
|
-
}, [
|
|
1725
|
+
}, [
|
|
1726
|
+
hasSession,
|
|
1727
|
+
isActive,
|
|
1728
|
+
registerDelegation,
|
|
1729
|
+
registerSpender,
|
|
1730
|
+
sessionClient,
|
|
1731
|
+
setup,
|
|
1732
|
+
hasAllowance,
|
|
1733
|
+
hasGasBalance,
|
|
1734
|
+
hasQuarryGasBalance
|
|
1735
|
+
]);
|
|
1577
1736
|
return /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-4", children: [
|
|
1578
1737
|
/* @__PURE__ */ jsxs13("div", { className: "flex justify-between gap-4", children: [
|
|
1579
1738
|
/* @__PURE__ */ jsxs13("div", { children: [
|
|
@@ -1601,8 +1760,9 @@ function Session({ isActive, isExpanded, userClient, registerSpender, registerDe
|
|
|
1601
1760
|
}
|
|
1602
1761
|
|
|
1603
1762
|
// src/onboarding/GasBalance.tsx
|
|
1604
|
-
import { useState as useState3 } from "react";
|
|
1763
|
+
import { useEffect as useEffect9, useState as useState3 } from "react";
|
|
1605
1764
|
import { parseEther as parseEther4 } from "viem";
|
|
1765
|
+
import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
|
|
1606
1766
|
import { useBalance as useBalance2, useWatchBlockNumber } from "wagmi";
|
|
1607
1767
|
|
|
1608
1768
|
// src/data/relayChains.json
|
|
@@ -1908,6 +2068,16 @@ function useSetBalance() {
|
|
|
1908
2068
|
});
|
|
1909
2069
|
}
|
|
1910
2070
|
|
|
2071
|
+
// src/errors/usePrevious.ts
|
|
2072
|
+
import { useEffect as useEffect8, useRef as useRef2 } from "react";
|
|
2073
|
+
function usePrevious(value, initialValue) {
|
|
2074
|
+
const ref = useRef2();
|
|
2075
|
+
useEffect8(() => {
|
|
2076
|
+
ref.current = { value };
|
|
2077
|
+
}, [value]);
|
|
2078
|
+
return ref.current ? ref.current.value : initialValue;
|
|
2079
|
+
}
|
|
2080
|
+
|
|
1911
2081
|
// src/icons/IconSVG.tsx
|
|
1912
2082
|
import { twMerge as twMerge7 } from "tailwind-merge";
|
|
1913
2083
|
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
@@ -1960,9 +2130,11 @@ function CheckIcon(props) {
|
|
|
1960
2130
|
// src/onboarding/GasBalance.tsx
|
|
1961
2131
|
import { Fragment, jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1962
2132
|
function GasBalance({ isActive, isExpanded, sessionAddress }) {
|
|
2133
|
+
const queryClient = useQueryClient6();
|
|
1963
2134
|
const { chain } = useEntryKitConfig();
|
|
1964
2135
|
const [copied, setCopied] = useState3(false);
|
|
1965
2136
|
const balance = useShowQueryError(useBalance2({ chainId: chain.id, address: sessionAddress }));
|
|
2137
|
+
const prevBalance = usePrevious(balance.data);
|
|
1966
2138
|
useWatchBlockNumber({ onBlockNumber: () => balance.refetch() });
|
|
1967
2139
|
const setBalance3 = useShowMutationError(useSetBalance());
|
|
1968
2140
|
const relayChain = relayChains_default[chain.id];
|
|
@@ -1971,6 +2143,11 @@ function GasBalance({ isActive, isExpanded, sessionAddress }) {
|
|
|
1971
2143
|
setCopied(true);
|
|
1972
2144
|
setTimeout(() => setCopied(false), 2e3);
|
|
1973
2145
|
};
|
|
2146
|
+
useEffect9(() => {
|
|
2147
|
+
if (balance.data != null && prevBalance?.value === 0n && balance.data.value > 0n) {
|
|
2148
|
+
queryClient.invalidateQueries({ queryKey: ["getPrerequisites"] });
|
|
2149
|
+
}
|
|
2150
|
+
}, [balance.data, prevBalance, setBalance3, sessionAddress, queryClient]);
|
|
1974
2151
|
return /* @__PURE__ */ jsxs14("div", { className: "flex flex-col gap-4", children: [
|
|
1975
2152
|
/* @__PURE__ */ jsxs14("div", { className: "flex justify-between gap-4", children: [
|
|
1976
2153
|
/* @__PURE__ */ jsxs14("div", { children: [
|
|
@@ -2041,7 +2218,7 @@ function GasBalance({ isActive, isExpanded, sessionAddress }) {
|
|
|
2041
2218
|
|
|
2042
2219
|
// src/onboarding/deposit/DepositFormContainer.tsx
|
|
2043
2220
|
import { useState as useState5 } from "react";
|
|
2044
|
-
import { useChains as
|
|
2221
|
+
import { useChains as useChains4, useChainId } from "wagmi";
|
|
2045
2222
|
|
|
2046
2223
|
// src/onboarding/deposit/DepositViaTransferForm.tsx
|
|
2047
2224
|
import { useAccount as useAccount5, useWriteContract, usePrepareTransactionRequest, usePublicClient } from "wagmi";
|
|
@@ -2049,16 +2226,16 @@ import { encodeFunctionData as encodeFunctionData2 } from "viem";
|
|
|
2049
2226
|
import { useMutation as useMutation4, useQuery as useQuery11 } from "@tanstack/react-query";
|
|
2050
2227
|
|
|
2051
2228
|
// src/onboarding/deposit/DepositForm.tsx
|
|
2052
|
-
import { useEffect as
|
|
2229
|
+
import { useEffect as useEffect11, useRef as useRef3 } from "react";
|
|
2053
2230
|
import { useAccount as useAccount4, useBalance as useBalance5, useWatchBlockNumber as useWatchBlockNumber2 } from "wagmi";
|
|
2054
2231
|
import { useIsMounted } from "usehooks-ts";
|
|
2055
2232
|
import { twMerge as twMerge15 } from "tailwind-merge";
|
|
2056
2233
|
|
|
2057
2234
|
// src/onboarding/deposit/ChainSelect.tsx
|
|
2058
|
-
import { useMemo as useMemo2 } from "react";
|
|
2235
|
+
import { useEffect as useEffect10, useMemo as useMemo2 } from "react";
|
|
2236
|
+
import { useAccount as useAccount2, useSwitchChain } from "wagmi";
|
|
2059
2237
|
import { twMerge as twMerge12 } from "tailwind-merge";
|
|
2060
2238
|
import * as Select from "@radix-ui/react-select";
|
|
2061
|
-
import { useAccount as useAccount2, useChains as useChains2 } from "wagmi";
|
|
2062
2239
|
|
|
2063
2240
|
// src/icons/ChevronUpIcon.tsx
|
|
2064
2241
|
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
@@ -2215,7 +2392,7 @@ function ChainSelect({ value, onChange }) {
|
|
|
2215
2392
|
const theme = useTheme();
|
|
2216
2393
|
const { frame } = useFrame();
|
|
2217
2394
|
const userAccount = useAccount2();
|
|
2218
|
-
const chains =
|
|
2395
|
+
const { chains, switchChain } = useSwitchChain();
|
|
2219
2396
|
const relay = useRelay();
|
|
2220
2397
|
const relayChains = relay.data?.chains;
|
|
2221
2398
|
const sourceChains = useMemo2(() => {
|
|
@@ -2228,6 +2405,13 @@ function ChainSelect({ value, onChange }) {
|
|
|
2228
2405
|
}).filter((c) => c.relayChain);
|
|
2229
2406
|
}, [chains, relayChains]);
|
|
2230
2407
|
const selectedChain = sourceChains.find((c) => c.id === value);
|
|
2408
|
+
useEffect10(() => {
|
|
2409
|
+
if (sourceChains.length > 0 && !selectedChain) {
|
|
2410
|
+
const defaultChain = sourceChains[0];
|
|
2411
|
+
onChange(defaultChain.id);
|
|
2412
|
+
switchChain({ chainId: defaultChain.id });
|
|
2413
|
+
}
|
|
2414
|
+
}, [value, selectedChain, sourceChains, onChange, switchChain]);
|
|
2231
2415
|
return /* @__PURE__ */ jsxs15(
|
|
2232
2416
|
Select.Root,
|
|
2233
2417
|
{
|
|
@@ -2342,7 +2526,7 @@ var AmountInput = forwardRef3(function AmountInput2({ initialAmount, onChange },
|
|
|
2342
2526
|
});
|
|
2343
2527
|
|
|
2344
2528
|
// src/onboarding/deposit/SubmitButton.tsx
|
|
2345
|
-
import { useAccount as useAccount3, useBalance as useBalance4, useSwitchChain } from "wagmi";
|
|
2529
|
+
import { useAccount as useAccount3, useBalance as useBalance4, useSwitchChain as useSwitchChain2 } from "wagmi";
|
|
2346
2530
|
import { twMerge as twMerge14 } from "tailwind-merge";
|
|
2347
2531
|
import { parseEther as parseEther6 } from "viem";
|
|
2348
2532
|
import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
@@ -2351,12 +2535,13 @@ function SubmitButton({ amount, chainId, className, ...buttonProps }) {
|
|
|
2351
2535
|
const { chainId: userChainId, address: userAddress } = useAccount3();
|
|
2352
2536
|
const { data: userBalance } = useBalance4({ address: userAddress });
|
|
2353
2537
|
const shouldSwitchChain = chainId != null && chainId !== userChainId;
|
|
2354
|
-
const switchChain =
|
|
2538
|
+
const switchChain = useSwitchChain2();
|
|
2355
2539
|
if (shouldSwitchChain) {
|
|
2356
2540
|
return /* @__PURE__ */ jsx28(
|
|
2357
2541
|
Button,
|
|
2358
2542
|
{
|
|
2359
2543
|
type: "button",
|
|
2544
|
+
variant: "primary",
|
|
2360
2545
|
className: twMerge14("w-full", className),
|
|
2361
2546
|
pending: switchChain.isPending,
|
|
2362
2547
|
onClick: () => switchChain.switchChain({ chainId }),
|
|
@@ -2412,7 +2597,7 @@ function DepositForm({
|
|
|
2412
2597
|
onSubmit,
|
|
2413
2598
|
submitButton
|
|
2414
2599
|
}) {
|
|
2415
|
-
const amountInputRef =
|
|
2600
|
+
const amountInputRef = useRef3(null);
|
|
2416
2601
|
const isMounted = useIsMounted();
|
|
2417
2602
|
const { address: userAddress, chainId: userChainId } = useAccount4();
|
|
2418
2603
|
const balance = useShowQueryError(useBalance5({ chainId: sourceChain.id, address: userAddress }));
|
|
@@ -2425,7 +2610,7 @@ function DepositForm({
|
|
|
2425
2610
|
});
|
|
2426
2611
|
const minimumBalance = amount != null ? amount + (estimatedFee?.fee ?? 0n) : void 0;
|
|
2427
2612
|
const hasMinimumBalance = balance.data != null ? balance.data.value > (minimumBalance ?? 0n) : void 0;
|
|
2428
|
-
|
|
2613
|
+
useEffect11(() => {
|
|
2429
2614
|
amountInputRef.current?.focus();
|
|
2430
2615
|
}, [userChainId]);
|
|
2431
2616
|
return /* @__PURE__ */ jsxs18(
|
|
@@ -2752,14 +2937,14 @@ function DepositViaRelayForm({ amount, setAmount, sourceChain, setSourceChainId
|
|
|
2752
2937
|
}
|
|
2753
2938
|
|
|
2754
2939
|
// src/onboarding/deposit/Deposits.tsx
|
|
2755
|
-
import { useEffect as
|
|
2756
|
-
import { useQuery as useQuery15, useQueryClient as
|
|
2940
|
+
import { useEffect as useEffect13 } from "react";
|
|
2941
|
+
import { useQuery as useQuery15, useQueryClient as useQueryClient7 } from "@tanstack/react-query";
|
|
2757
2942
|
|
|
2758
2943
|
// src/onboarding/deposit/TransferDepositStatus.tsx
|
|
2759
2944
|
import { useQuery as useQuery13 } from "@tanstack/react-query";
|
|
2760
2945
|
|
|
2761
2946
|
// src/onboarding/deposit/DepositStatus.tsx
|
|
2762
|
-
import { useEffect as
|
|
2947
|
+
import { useEffect as useEffect12, useState as useState4 } from "react";
|
|
2763
2948
|
import { twMerge as twMerge16 } from "tailwind-merge";
|
|
2764
2949
|
|
|
2765
2950
|
// src/icons/CloseIcon.tsx
|
|
@@ -2782,7 +2967,7 @@ function CloseIcon(props) {
|
|
|
2782
2967
|
import { jsx as jsx34, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2783
2968
|
function DepositStatus({ status, progress, children, onDismiss }) {
|
|
2784
2969
|
const [appear, setAppear] = useState4(false);
|
|
2785
|
-
|
|
2970
|
+
useEffect12(() => {
|
|
2786
2971
|
setAppear(true);
|
|
2787
2972
|
}, []);
|
|
2788
2973
|
return /* @__PURE__ */ jsxs19("div", { className: "group bg-white dark:bg-neutral-900 flex flex-col animate-in fade-in slide-in-from-bottom-2 animate-out fade-out", children: [
|
|
@@ -2827,7 +3012,7 @@ function DepositStatus({ status, progress, children, onDismiss }) {
|
|
|
2827
3012
|
}
|
|
2828
3013
|
|
|
2829
3014
|
// src/onboarding/deposit/TransferDepositStatus.tsx
|
|
2830
|
-
import { useChains as
|
|
3015
|
+
import { useChains as useChains2 } from "wagmi";
|
|
2831
3016
|
import { Fragment as Fragment5, jsx as jsx35, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2832
3017
|
function TransferDepositStatus({
|
|
2833
3018
|
amount,
|
|
@@ -2838,7 +3023,7 @@ function TransferDepositStatus({
|
|
|
2838
3023
|
estimatedTime,
|
|
2839
3024
|
onDismiss
|
|
2840
3025
|
}) {
|
|
2841
|
-
const chains =
|
|
3026
|
+
const chains = useChains2();
|
|
2842
3027
|
const chain = chains.find((chain2) => chain2.id === chainL1Id);
|
|
2843
3028
|
const receipt = useQuery13({
|
|
2844
3029
|
queryKey: ["transferDepositStatus", hash],
|
|
@@ -2900,8 +3085,7 @@ function TransferDepositStatus({
|
|
|
2900
3085
|
}
|
|
2901
3086
|
),
|
|
2902
3087
|
" ",
|
|
2903
|
-
/* @__PURE__ */ jsx35(Balance, { wei: amount })
|
|
2904
|
-
" !"
|
|
3088
|
+
/* @__PURE__ */ jsx35(Balance, { wei: amount })
|
|
2905
3089
|
] });
|
|
2906
3090
|
})()
|
|
2907
3091
|
}
|
|
@@ -2910,7 +3094,7 @@ function TransferDepositStatus({
|
|
|
2910
3094
|
|
|
2911
3095
|
// src/onboarding/deposit/RelayDepositStatus.tsx
|
|
2912
3096
|
import { useQuery as useQuery14 } from "@tanstack/react-query";
|
|
2913
|
-
import { useChains as
|
|
3097
|
+
import { useChains as useChains3 } from "wagmi";
|
|
2914
3098
|
import { Fragment as Fragment6, jsx as jsx36, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2915
3099
|
function RelayDepositStatus({
|
|
2916
3100
|
amount,
|
|
@@ -2921,7 +3105,7 @@ function RelayDepositStatus({
|
|
|
2921
3105
|
depositPromise,
|
|
2922
3106
|
onDismiss
|
|
2923
3107
|
}) {
|
|
2924
|
-
const chains =
|
|
3108
|
+
const chains = useChains3();
|
|
2925
3109
|
const chainL1 = chains.find((chain) => chain.id === chainL1Id);
|
|
2926
3110
|
const chainL2 = chains.find((chain) => chain.id === chainL2Id);
|
|
2927
3111
|
const deposit = useQuery14({
|
|
@@ -2968,7 +3152,7 @@ function RelayDepositStatus({
|
|
|
2968
3152
|
import { useAccount as useAccount7, useClient as useClient11 } from "wagmi";
|
|
2969
3153
|
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
2970
3154
|
function Deposits() {
|
|
2971
|
-
const queryClient =
|
|
3155
|
+
const queryClient = useQueryClient7();
|
|
2972
3156
|
const { chainId } = useEntryKitConfig();
|
|
2973
3157
|
const client = useClient11({ chainId });
|
|
2974
3158
|
const { address: userAddress } = useAccount7();
|
|
@@ -2981,7 +3165,7 @@ function Deposits() {
|
|
|
2981
3165
|
return true;
|
|
2982
3166
|
}
|
|
2983
3167
|
});
|
|
2984
|
-
|
|
3168
|
+
useEffect13(() => {
|
|
2985
3169
|
if (isComplete) {
|
|
2986
3170
|
queryClient.invalidateQueries({ queryKey: ["balance"] });
|
|
2987
3171
|
queryClient.invalidateQueries({ queryKey: ["getBalance", client?.uid, userAddress] });
|
|
@@ -3002,7 +3186,7 @@ import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
|
3002
3186
|
function DepositFormContainer() {
|
|
3003
3187
|
const { chainId: destinationChainId } = useEntryKitConfig();
|
|
3004
3188
|
const chainId = useChainId();
|
|
3005
|
-
const chains =
|
|
3189
|
+
const chains = useChains4();
|
|
3006
3190
|
const [amount, setAmount] = useState5(void 0);
|
|
3007
3191
|
const [sourceChainId, setSourceChainId] = useState5(chainId);
|
|
3008
3192
|
const sourceChain = chains.find(({ id }) => id === sourceChainId);
|
|
@@ -3045,33 +3229,18 @@ function ArrowLeftIcon(props) {
|
|
|
3045
3229
|
}
|
|
3046
3230
|
|
|
3047
3231
|
// src/onboarding/quarry/GasBalance.tsx
|
|
3048
|
-
import { useEffect as
|
|
3049
|
-
import { useQueryClient as
|
|
3050
|
-
|
|
3051
|
-
// src/errors/usePrevious.ts
|
|
3052
|
-
import { useEffect as useEffect11, useRef as useRef3 } from "react";
|
|
3053
|
-
function usePrevious(value, initialValue) {
|
|
3054
|
-
const ref = useRef3();
|
|
3055
|
-
useEffect11(() => {
|
|
3056
|
-
ref.current = { value };
|
|
3057
|
-
}, [value]);
|
|
3058
|
-
return ref.current ? ref.current.value : initialValue;
|
|
3059
|
-
}
|
|
3060
|
-
|
|
3061
|
-
// src/onboarding/quarry/GasBalance.tsx
|
|
3232
|
+
import { useEffect as useEffect14 } from "react";
|
|
3233
|
+
import { useQueryClient as useQueryClient8 } from "@tanstack/react-query";
|
|
3062
3234
|
import { Fragment as Fragment7, jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3063
3235
|
function GasBalance2({ isActive, isExpanded, isFocused, setFocused, userAddress }) {
|
|
3064
|
-
const queryClient =
|
|
3236
|
+
const queryClient = useQueryClient8();
|
|
3065
3237
|
const balance = useShowQueryError(useBalance(userAddress));
|
|
3066
3238
|
const prevBalance = usePrevious(balance.data || 0n);
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
}
|
|
3073
|
-
};
|
|
3074
|
-
checkBalance();
|
|
3239
|
+
useEffect14(() => {
|
|
3240
|
+
if (balance.data != null && prevBalance === 0n && balance.data > 0n) {
|
|
3241
|
+
queryClient.invalidateQueries({ queryKey: ["getPrerequisites"] });
|
|
3242
|
+
setFocused(false);
|
|
3243
|
+
}
|
|
3075
3244
|
}, [balance.data, prevBalance, setFocused, queryClient, userAddress]);
|
|
3076
3245
|
if (isFocused) {
|
|
3077
3246
|
return /* @__PURE__ */ jsxs23(Fragment7, { children: [
|
|
@@ -3116,7 +3285,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
|
|
|
3116
3285
|
const [focusedId, setFocusedId] = useState6(null);
|
|
3117
3286
|
const userAddress = userClient.account.address;
|
|
3118
3287
|
const { data: prerequisites, error: prerequisitesError } = usePrerequisites(userAddress);
|
|
3119
|
-
|
|
3288
|
+
useEffect15(() => {
|
|
3120
3289
|
if (prerequisitesError) {
|
|
3121
3290
|
console.error("Could not get prerequisites", prerequisitesError);
|
|
3122
3291
|
}
|
|
@@ -3124,7 +3293,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
|
|
|
3124
3293
|
const { closeAccountModal } = useAccountModal();
|
|
3125
3294
|
const isNewConnection = userAddress !== initialUserAddress;
|
|
3126
3295
|
const initialPrerequisites = useRef4(prerequisites);
|
|
3127
|
-
|
|
3296
|
+
useEffect15(() => {
|
|
3128
3297
|
if (prerequisites == null) return;
|
|
3129
3298
|
if (initialPrerequisites.current == null) {
|
|
3130
3299
|
initialPrerequisites.current = prerequisites;
|
|
@@ -3135,7 +3304,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
|
|
|
3135
3304
|
}
|
|
3136
3305
|
}
|
|
3137
3306
|
}, [closeAccountModal, isNewConnection, prerequisites]);
|
|
3138
|
-
const { sessionAddress, hasAllowance, isSpender, hasDelegation, hasGasBalance,
|
|
3307
|
+
const { sessionAddress, hasAllowance, isSpender, hasDelegation, hasGasBalance, hasQuarryGasBalance } = prerequisites ?? {};
|
|
3139
3308
|
const steps = useMemo4(() => {
|
|
3140
3309
|
if (!userAddress) {
|
|
3141
3310
|
return [
|
|
@@ -3171,7 +3340,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
|
|
|
3171
3340
|
} else {
|
|
3172
3341
|
steps2.push({
|
|
3173
3342
|
id: "gasBalanceQuarry",
|
|
3174
|
-
isComplete: !!
|
|
3343
|
+
isComplete: !!hasQuarryGasBalance,
|
|
3175
3344
|
content: (props) => /* @__PURE__ */ jsx41(GasBalance2, { ...props, userAddress })
|
|
3176
3345
|
});
|
|
3177
3346
|
}
|
|
@@ -3186,7 +3355,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
|
|
|
3186
3355
|
hasAllowance,
|
|
3187
3356
|
hasDelegation,
|
|
3188
3357
|
hasGasBalance,
|
|
3189
|
-
|
|
3358
|
+
hasQuarryGasBalance,
|
|
3190
3359
|
isSpender,
|
|
3191
3360
|
paymaster,
|
|
3192
3361
|
sessionAddress,
|
|
@@ -3249,11 +3418,11 @@ import { ErrorBoundary } from "react-error-boundary";
|
|
|
3249
3418
|
|
|
3250
3419
|
// src/errors/ErrorOverlay.tsx
|
|
3251
3420
|
import { wait } from "@latticexyz/common/utils";
|
|
3252
|
-
import { useEffect as
|
|
3421
|
+
import { useEffect as useEffect16 } from "react";
|
|
3253
3422
|
import { twMerge as twMerge18 } from "tailwind-merge";
|
|
3254
3423
|
import { Fragment as Fragment8, jsx as jsx43, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3255
3424
|
function ErrorOverlay({ error: error2, retry, dismiss }) {
|
|
3256
|
-
|
|
3425
|
+
useEffect16(() => {
|
|
3257
3426
|
if (error2) {
|
|
3258
3427
|
console.error(error2);
|
|
3259
3428
|
}
|