@matchain/matchid-sdk-react 0.1.53-alpha.19 → 0.1.53-alpha.20
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/dist/{chunk-Z7L7RRWB.mjs → chunk-CLMSEFOV.mjs} +692 -184
- package/dist/chunk-CLMSEFOV.mjs.map +1 -0
- package/dist/components/index.js +629 -121
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +1 -1
- package/dist/hooks/api/index.js +52 -36
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +1 -1
- package/dist/hooks/index.js +120 -104
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/index.js +725 -217
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-Z7L7RRWB.mjs.map +0 -1
|
@@ -611,7 +611,7 @@ var localStore = useLocalStore;
|
|
|
611
611
|
var useLocalStore_default = useLocalStore;
|
|
612
612
|
|
|
613
613
|
// src/hooks/useUserInfo.tsx
|
|
614
|
-
import { useMemo as
|
|
614
|
+
import { useMemo as useMemo17 } from "react";
|
|
615
615
|
|
|
616
616
|
// src/MatchContext.tsx
|
|
617
617
|
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
@@ -2146,34 +2146,8 @@ function UsernameModal({
|
|
|
2146
2146
|
}
|
|
2147
2147
|
|
|
2148
2148
|
// src/components/EVMModal/index.tsx
|
|
2149
|
+
import { useCallback as useCallback4, useEffect as useEffect10, useState as useState15 } from "react";
|
|
2149
2150
|
import { useIntl as useIntl9 } from "react-intl";
|
|
2150
|
-
import "@rainbow-me/rainbowkit/styles.css";
|
|
2151
|
-
import { Fragment as Fragment3, jsx as jsx16 } from "react/jsx-runtime";
|
|
2152
|
-
function WalletContent({
|
|
2153
|
-
onSuccess,
|
|
2154
|
-
type
|
|
2155
|
-
}) {
|
|
2156
|
-
return /* @__PURE__ */ jsx16(Fragment3, {});
|
|
2157
|
-
}
|
|
2158
|
-
function EVMConnectModal({
|
|
2159
|
-
type = "login",
|
|
2160
|
-
onSuccess,
|
|
2161
|
-
...props
|
|
2162
|
-
}) {
|
|
2163
|
-
const intl = useIntl9();
|
|
2164
|
-
return /* @__PURE__ */ jsx16(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
2165
|
-
id: type == "bind" ? "bindWith" : "loginWith"
|
|
2166
|
-
}, {
|
|
2167
|
-
name: "EVM"
|
|
2168
|
-
}), children: /* @__PURE__ */ jsx16(WalletContent, { onSuccess, type }) });
|
|
2169
|
-
}
|
|
2170
|
-
function EVMModal(props) {
|
|
2171
|
-
return props.isOpen && /* @__PURE__ */ jsx16(EVMConnectModal, { ...props });
|
|
2172
|
-
}
|
|
2173
|
-
|
|
2174
|
-
// src/components/TRONModal/index.tsx
|
|
2175
|
-
import React4, { useEffect as useEffect10, useMemo as useMemo8, useState as useState15 } from "react";
|
|
2176
|
-
import { useIntl as useIntl10 } from "react-intl";
|
|
2177
2151
|
|
|
2178
2152
|
// src/components/WalletModalContent/index.tsx
|
|
2179
2153
|
import { useMemo as useMemo7, useState as useState13 } from "react";
|
|
@@ -2186,7 +2160,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
2186
2160
|
var walletSigningImage = "data:image/png;base64,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";
|
|
2187
2161
|
|
|
2188
2162
|
// src/components/WalletModalContent/index.tsx
|
|
2189
|
-
import { jsx as
|
|
2163
|
+
import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2190
2164
|
function WalletModalContent({
|
|
2191
2165
|
status,
|
|
2192
2166
|
error,
|
|
@@ -2256,12 +2230,93 @@ function WalletModalContent({
|
|
|
2256
2230
|
statusImage: walletConnectImage
|
|
2257
2231
|
};
|
|
2258
2232
|
}, [visible, connected, status, error, address]);
|
|
2259
|
-
return /* @__PURE__ */
|
|
2233
|
+
return /* @__PURE__ */ jsx16("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs12("div", { className: `matchid-wallet-box`, children: [
|
|
2260
2234
|
/* @__PURE__ */ jsxs12("div", { className: `matchid-wallet-content`, children: [
|
|
2261
|
-
/* @__PURE__ */
|
|
2262
|
-
/* @__PURE__ */
|
|
2235
|
+
/* @__PURE__ */ jsx16("img", { src: pageData.statusImage }),
|
|
2236
|
+
/* @__PURE__ */ jsx16("div", { className: pageData.isError ? "matchid-error" : "", children: pageData.text })
|
|
2263
2237
|
] }),
|
|
2264
|
-
/* @__PURE__ */
|
|
2238
|
+
/* @__PURE__ */ jsx16(
|
|
2239
|
+
Button,
|
|
2240
|
+
{
|
|
2241
|
+
block: true,
|
|
2242
|
+
size: "lg",
|
|
2243
|
+
onClick: pageData.btnClick,
|
|
2244
|
+
loading: pageData.btnLoading,
|
|
2245
|
+
disabled: pageData.btnDisabled,
|
|
2246
|
+
children: pageData.btnText
|
|
2247
|
+
}
|
|
2248
|
+
)
|
|
2249
|
+
] }) });
|
|
2250
|
+
}
|
|
2251
|
+
function WalletModalContentV2(props) {
|
|
2252
|
+
const [submitting, setSubmitting] = useState13(false);
|
|
2253
|
+
const pageData = useMemo7(() => {
|
|
2254
|
+
const { status } = props;
|
|
2255
|
+
if (status == "success") {
|
|
2256
|
+
return {
|
|
2257
|
+
btnText: "Disconnect Wallet",
|
|
2258
|
+
btnClick: async () => {
|
|
2259
|
+
setSubmitting(true);
|
|
2260
|
+
await props.onDisconnect?.();
|
|
2261
|
+
setSubmitting(false);
|
|
2262
|
+
},
|
|
2263
|
+
text: "Wallet connection successful!",
|
|
2264
|
+
statusImage: walletConnectedImage,
|
|
2265
|
+
btnLoading: submitting
|
|
2266
|
+
};
|
|
2267
|
+
}
|
|
2268
|
+
if (status == "error") {
|
|
2269
|
+
return {
|
|
2270
|
+
text: props.error || "Unknown Error",
|
|
2271
|
+
btnText: "Reconnect Wallet",
|
|
2272
|
+
btnClick: async () => {
|
|
2273
|
+
setSubmitting(true);
|
|
2274
|
+
await props.onError?.();
|
|
2275
|
+
setSubmitting(false);
|
|
2276
|
+
},
|
|
2277
|
+
statusImage: walletErrorImage,
|
|
2278
|
+
isError: true,
|
|
2279
|
+
btnLoading: submitting
|
|
2280
|
+
};
|
|
2281
|
+
}
|
|
2282
|
+
if (status == "nonce") {
|
|
2283
|
+
return {
|
|
2284
|
+
btnLoading: true,
|
|
2285
|
+
text: "Connecting",
|
|
2286
|
+
statusImage: walletConnectingImage
|
|
2287
|
+
};
|
|
2288
|
+
}
|
|
2289
|
+
if (status == "signer") {
|
|
2290
|
+
return {
|
|
2291
|
+
btnLoading: true,
|
|
2292
|
+
text: "Signing",
|
|
2293
|
+
statusImage: walletSigningImage
|
|
2294
|
+
};
|
|
2295
|
+
}
|
|
2296
|
+
if (status == "connecting") {
|
|
2297
|
+
return {
|
|
2298
|
+
btnLoading: true,
|
|
2299
|
+
text: "Connecting",
|
|
2300
|
+
statusImage: walletConnectingImage
|
|
2301
|
+
};
|
|
2302
|
+
}
|
|
2303
|
+
return {
|
|
2304
|
+
btnText: "Connect Wallet",
|
|
2305
|
+
btnClick: async () => {
|
|
2306
|
+
setSubmitting(true);
|
|
2307
|
+
await props.onConnect?.();
|
|
2308
|
+
setSubmitting(false);
|
|
2309
|
+
},
|
|
2310
|
+
text: "Please Connect your wallet",
|
|
2311
|
+
statusImage: walletConnectImage
|
|
2312
|
+
};
|
|
2313
|
+
}, [props, submitting]);
|
|
2314
|
+
return /* @__PURE__ */ jsx16("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs12("div", { className: `matchid-wallet-box`, children: [
|
|
2315
|
+
/* @__PURE__ */ jsxs12("div", { className: `matchid-wallet-content`, children: [
|
|
2316
|
+
/* @__PURE__ */ jsx16("img", { src: pageData.statusImage }),
|
|
2317
|
+
/* @__PURE__ */ jsx16("div", { className: props.status == "error" ? "matchid-error" : "", children: pageData.text })
|
|
2318
|
+
] }),
|
|
2319
|
+
/* @__PURE__ */ jsx16(
|
|
2265
2320
|
Button,
|
|
2266
2321
|
{
|
|
2267
2322
|
block: true,
|
|
@@ -2275,6 +2330,459 @@ function WalletModalContent({
|
|
|
2275
2330
|
] }) });
|
|
2276
2331
|
}
|
|
2277
2332
|
|
|
2333
|
+
// src/components/EVMModal/index.tsx
|
|
2334
|
+
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
2335
|
+
import { useAccount, useChainId, useConfig, useDisconnect } from "wagmi";
|
|
2336
|
+
|
|
2337
|
+
// src/hooks/useWalletBox.ts
|
|
2338
|
+
import { useEffect as useEffect9, useRef as useRef2, useState as useState14 } from "react";
|
|
2339
|
+
function useWalletBox({
|
|
2340
|
+
onInit
|
|
2341
|
+
}) {
|
|
2342
|
+
const [status, setStateStatus] = useState14("start");
|
|
2343
|
+
const [error, setError] = useState14("");
|
|
2344
|
+
const statusRef = useRef2(status);
|
|
2345
|
+
const [nonce, setNonce] = useState14();
|
|
2346
|
+
const setStatus = (status2) => {
|
|
2347
|
+
statusRef.current = status2;
|
|
2348
|
+
setStateStatus(status2);
|
|
2349
|
+
};
|
|
2350
|
+
const init = () => {
|
|
2351
|
+
setError("");
|
|
2352
|
+
setNonce(null);
|
|
2353
|
+
};
|
|
2354
|
+
useEffect9(() => {
|
|
2355
|
+
init();
|
|
2356
|
+
onInit({
|
|
2357
|
+
setStatus
|
|
2358
|
+
});
|
|
2359
|
+
return () => {
|
|
2360
|
+
setStatus("start");
|
|
2361
|
+
setNonce(null);
|
|
2362
|
+
setError("");
|
|
2363
|
+
};
|
|
2364
|
+
}, []);
|
|
2365
|
+
return {
|
|
2366
|
+
status,
|
|
2367
|
+
statusRef,
|
|
2368
|
+
setStatus,
|
|
2369
|
+
error,
|
|
2370
|
+
setError,
|
|
2371
|
+
nonce,
|
|
2372
|
+
setNonce,
|
|
2373
|
+
init
|
|
2374
|
+
};
|
|
2375
|
+
}
|
|
2376
|
+
|
|
2377
|
+
// src/hooks/useEthersSigner.ts
|
|
2378
|
+
import * as React4 from "react";
|
|
2379
|
+
import { useWalletClient } from "wagmi";
|
|
2380
|
+
import { providers } from "ethers";
|
|
2381
|
+
|
|
2382
|
+
// node_modules/@wagmi/core/dist/esm/version.js
|
|
2383
|
+
var version = "2.16.3";
|
|
2384
|
+
|
|
2385
|
+
// node_modules/@wagmi/core/dist/esm/utils/getVersion.js
|
|
2386
|
+
var getVersion2 = () => `@wagmi/core@${version}`;
|
|
2387
|
+
|
|
2388
|
+
// node_modules/@wagmi/core/dist/esm/errors/base.js
|
|
2389
|
+
var __classPrivateFieldGet = function(receiver, state, kind, f) {
|
|
2390
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
2391
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
2392
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
2393
|
+
};
|
|
2394
|
+
var _BaseError_instances;
|
|
2395
|
+
var _BaseError_walk;
|
|
2396
|
+
var BaseError = class _BaseError extends Error {
|
|
2397
|
+
get docsBaseUrl() {
|
|
2398
|
+
return "https://wagmi.sh/core";
|
|
2399
|
+
}
|
|
2400
|
+
get version() {
|
|
2401
|
+
return getVersion2();
|
|
2402
|
+
}
|
|
2403
|
+
constructor(shortMessage, options = {}) {
|
|
2404
|
+
super();
|
|
2405
|
+
_BaseError_instances.add(this);
|
|
2406
|
+
Object.defineProperty(this, "details", {
|
|
2407
|
+
enumerable: true,
|
|
2408
|
+
configurable: true,
|
|
2409
|
+
writable: true,
|
|
2410
|
+
value: void 0
|
|
2411
|
+
});
|
|
2412
|
+
Object.defineProperty(this, "docsPath", {
|
|
2413
|
+
enumerable: true,
|
|
2414
|
+
configurable: true,
|
|
2415
|
+
writable: true,
|
|
2416
|
+
value: void 0
|
|
2417
|
+
});
|
|
2418
|
+
Object.defineProperty(this, "metaMessages", {
|
|
2419
|
+
enumerable: true,
|
|
2420
|
+
configurable: true,
|
|
2421
|
+
writable: true,
|
|
2422
|
+
value: void 0
|
|
2423
|
+
});
|
|
2424
|
+
Object.defineProperty(this, "shortMessage", {
|
|
2425
|
+
enumerable: true,
|
|
2426
|
+
configurable: true,
|
|
2427
|
+
writable: true,
|
|
2428
|
+
value: void 0
|
|
2429
|
+
});
|
|
2430
|
+
Object.defineProperty(this, "name", {
|
|
2431
|
+
enumerable: true,
|
|
2432
|
+
configurable: true,
|
|
2433
|
+
writable: true,
|
|
2434
|
+
value: "WagmiCoreError"
|
|
2435
|
+
});
|
|
2436
|
+
const details = options.cause instanceof _BaseError ? options.cause.details : options.cause?.message ? options.cause.message : options.details;
|
|
2437
|
+
const docsPath = options.cause instanceof _BaseError ? options.cause.docsPath || options.docsPath : options.docsPath;
|
|
2438
|
+
this.message = [
|
|
2439
|
+
shortMessage || "An error occurred.",
|
|
2440
|
+
"",
|
|
2441
|
+
...options.metaMessages ? [...options.metaMessages, ""] : [],
|
|
2442
|
+
...docsPath ? [
|
|
2443
|
+
`Docs: ${this.docsBaseUrl}${docsPath}.html${options.docsSlug ? `#${options.docsSlug}` : ""}`
|
|
2444
|
+
] : [],
|
|
2445
|
+
...details ? [`Details: ${details}`] : [],
|
|
2446
|
+
`Version: ${this.version}`
|
|
2447
|
+
].join("\n");
|
|
2448
|
+
if (options.cause)
|
|
2449
|
+
this.cause = options.cause;
|
|
2450
|
+
this.details = details;
|
|
2451
|
+
this.docsPath = docsPath;
|
|
2452
|
+
this.metaMessages = options.metaMessages;
|
|
2453
|
+
this.shortMessage = shortMessage;
|
|
2454
|
+
}
|
|
2455
|
+
walk(fn) {
|
|
2456
|
+
return __classPrivateFieldGet(this, _BaseError_instances, "m", _BaseError_walk).call(this, this, fn);
|
|
2457
|
+
}
|
|
2458
|
+
};
|
|
2459
|
+
_BaseError_instances = /* @__PURE__ */ new WeakSet(), _BaseError_walk = function _BaseError_walk2(err, fn) {
|
|
2460
|
+
if (fn?.(err))
|
|
2461
|
+
return err;
|
|
2462
|
+
if (err.cause)
|
|
2463
|
+
return __classPrivateFieldGet(this, _BaseError_instances, "m", _BaseError_walk2).call(this, err.cause, fn);
|
|
2464
|
+
return err;
|
|
2465
|
+
};
|
|
2466
|
+
|
|
2467
|
+
// node_modules/@wagmi/core/dist/esm/errors/config.js
|
|
2468
|
+
var ConnectorNotConnectedError = class extends BaseError {
|
|
2469
|
+
constructor() {
|
|
2470
|
+
super("Connector not connected.");
|
|
2471
|
+
Object.defineProperty(this, "name", {
|
|
2472
|
+
enumerable: true,
|
|
2473
|
+
configurable: true,
|
|
2474
|
+
writable: true,
|
|
2475
|
+
value: "ConnectorNotConnectedError"
|
|
2476
|
+
});
|
|
2477
|
+
}
|
|
2478
|
+
};
|
|
2479
|
+
var ConnectorAccountNotFoundError = class extends BaseError {
|
|
2480
|
+
constructor({ address, connector }) {
|
|
2481
|
+
super(`Account "${address}" not found for connector "${connector.name}".`);
|
|
2482
|
+
Object.defineProperty(this, "name", {
|
|
2483
|
+
enumerable: true,
|
|
2484
|
+
configurable: true,
|
|
2485
|
+
writable: true,
|
|
2486
|
+
value: "ConnectorAccountNotFoundError"
|
|
2487
|
+
});
|
|
2488
|
+
}
|
|
2489
|
+
};
|
|
2490
|
+
var ConnectorChainMismatchError = class extends BaseError {
|
|
2491
|
+
constructor({ connectionChainId, connectorChainId }) {
|
|
2492
|
+
super(`The current chain of the connector (id: ${connectorChainId}) does not match the connection's chain (id: ${connectionChainId}).`, {
|
|
2493
|
+
metaMessages: [
|
|
2494
|
+
`Current Chain ID: ${connectorChainId}`,
|
|
2495
|
+
`Expected Chain ID: ${connectionChainId}`
|
|
2496
|
+
]
|
|
2497
|
+
});
|
|
2498
|
+
Object.defineProperty(this, "name", {
|
|
2499
|
+
enumerable: true,
|
|
2500
|
+
configurable: true,
|
|
2501
|
+
writable: true,
|
|
2502
|
+
value: "ConnectorChainMismatchError"
|
|
2503
|
+
});
|
|
2504
|
+
}
|
|
2505
|
+
};
|
|
2506
|
+
var ConnectorUnavailableReconnectingError = class extends BaseError {
|
|
2507
|
+
constructor({ connector }) {
|
|
2508
|
+
super(`Connector "${connector.name}" unavailable while reconnecting.`, {
|
|
2509
|
+
details: [
|
|
2510
|
+
"During the reconnection step, the only connector methods guaranteed to be available are: `id`, `name`, `type`, `uid`.",
|
|
2511
|
+
"All other methods are not guaranteed to be available until reconnection completes and connectors are fully restored.",
|
|
2512
|
+
"This error commonly occurs for connectors that asynchronously inject after reconnection has already started."
|
|
2513
|
+
].join(" ")
|
|
2514
|
+
});
|
|
2515
|
+
Object.defineProperty(this, "name", {
|
|
2516
|
+
enumerable: true,
|
|
2517
|
+
configurable: true,
|
|
2518
|
+
writable: true,
|
|
2519
|
+
value: "ConnectorUnavailableReconnectingError"
|
|
2520
|
+
});
|
|
2521
|
+
}
|
|
2522
|
+
};
|
|
2523
|
+
|
|
2524
|
+
// node_modules/@wagmi/core/dist/esm/actions/getConnectorClient.js
|
|
2525
|
+
import { createClient, custom } from "viem";
|
|
2526
|
+
import { getAddress, parseAccount } from "viem/utils";
|
|
2527
|
+
async function getConnectorClient(config, parameters = {}) {
|
|
2528
|
+
let connection;
|
|
2529
|
+
if (parameters.connector) {
|
|
2530
|
+
const { connector: connector2 } = parameters;
|
|
2531
|
+
if (config.state.status === "reconnecting" && !connector2.getAccounts && !connector2.getChainId)
|
|
2532
|
+
throw new ConnectorUnavailableReconnectingError({ connector: connector2 });
|
|
2533
|
+
const [accounts, chainId2] = await Promise.all([
|
|
2534
|
+
connector2.getAccounts(),
|
|
2535
|
+
connector2.getChainId()
|
|
2536
|
+
]);
|
|
2537
|
+
connection = {
|
|
2538
|
+
accounts,
|
|
2539
|
+
chainId: chainId2,
|
|
2540
|
+
connector: connector2
|
|
2541
|
+
};
|
|
2542
|
+
} else
|
|
2543
|
+
connection = config.state.connections.get(config.state.current);
|
|
2544
|
+
if (!connection)
|
|
2545
|
+
throw new ConnectorNotConnectedError();
|
|
2546
|
+
const chainId = parameters.chainId ?? connection.chainId;
|
|
2547
|
+
const connectorChainId = await connection.connector.getChainId();
|
|
2548
|
+
if (connectorChainId !== connection.chainId)
|
|
2549
|
+
throw new ConnectorChainMismatchError({
|
|
2550
|
+
connectionChainId: connection.chainId,
|
|
2551
|
+
connectorChainId
|
|
2552
|
+
});
|
|
2553
|
+
const connector = connection.connector;
|
|
2554
|
+
if (connector.getClient)
|
|
2555
|
+
return connector.getClient({ chainId });
|
|
2556
|
+
const account = parseAccount(parameters.account ?? connection.accounts[0]);
|
|
2557
|
+
account.address = getAddress(account.address);
|
|
2558
|
+
if (parameters.account && !connection.accounts.some((x) => x.toLowerCase() === account.address.toLowerCase()))
|
|
2559
|
+
throw new ConnectorAccountNotFoundError({
|
|
2560
|
+
address: account.address,
|
|
2561
|
+
connector
|
|
2562
|
+
});
|
|
2563
|
+
const chain = config.chains.find((chain2) => chain2.id === chainId);
|
|
2564
|
+
const provider = await connection.connector.getProvider({ chainId });
|
|
2565
|
+
return createClient({
|
|
2566
|
+
account,
|
|
2567
|
+
chain,
|
|
2568
|
+
name: "Connector Client",
|
|
2569
|
+
transport: (opts) => custom(provider)({ ...opts, retryCount: 0 })
|
|
2570
|
+
});
|
|
2571
|
+
}
|
|
2572
|
+
|
|
2573
|
+
// node_modules/@wagmi/core/dist/esm/exports/index.js
|
|
2574
|
+
import { custom as custom2, http as http3, webSocket } from "viem";
|
|
2575
|
+
|
|
2576
|
+
// src/hooks/useEthersSigner.ts
|
|
2577
|
+
function clientToSigner(client) {
|
|
2578
|
+
const { account, chain, transport } = client;
|
|
2579
|
+
const network = {
|
|
2580
|
+
chainId: chain.id,
|
|
2581
|
+
name: chain.name,
|
|
2582
|
+
ensAddress: chain.contracts?.ensRegistry?.address
|
|
2583
|
+
};
|
|
2584
|
+
const provider = new providers.Web3Provider(transport, network);
|
|
2585
|
+
const signer = provider.getSigner(account.address);
|
|
2586
|
+
return signer;
|
|
2587
|
+
}
|
|
2588
|
+
async function getEthersSigner(config, { chainId } = {}) {
|
|
2589
|
+
const client = await getConnectorClient(config, { chainId });
|
|
2590
|
+
return clientToSigner(client);
|
|
2591
|
+
}
|
|
2592
|
+
|
|
2593
|
+
// src/components/EVMModal/index.tsx
|
|
2594
|
+
import { SiweMessage } from "siwe";
|
|
2595
|
+
import "@rainbow-me/rainbowkit/styles.css";
|
|
2596
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
2597
|
+
function WalletContent({
|
|
2598
|
+
onSuccess,
|
|
2599
|
+
type
|
|
2600
|
+
}) {
|
|
2601
|
+
const config = useConfig();
|
|
2602
|
+
const { openConnectModal, connectModalOpen } = useConnectModal();
|
|
2603
|
+
const { address, connector, isConnected } = useAccount();
|
|
2604
|
+
const { disconnectAsync } = useDisconnect({ config });
|
|
2605
|
+
const chainId = useChainId();
|
|
2606
|
+
const { events, login } = useMatch();
|
|
2607
|
+
const [inited, setInited] = useState15(false);
|
|
2608
|
+
const { status, setStatus, error, setError, statusRef, nonce, setNonce, init } = useWalletBox({
|
|
2609
|
+
onInit: async ({ setStatus: setStatus2 }) => {
|
|
2610
|
+
setStatus2("start");
|
|
2611
|
+
}
|
|
2612
|
+
});
|
|
2613
|
+
useEffect10(() => {
|
|
2614
|
+
matchlog_default.log(`status=${status}`, `connectModalOpen=${connectModalOpen}`, `address=${address}`, `isConnected=${isConnected}`);
|
|
2615
|
+
}, [status, connectModalOpen, isConnected, address]);
|
|
2616
|
+
useEffect10(() => {
|
|
2617
|
+
if (connectModalOpen) {
|
|
2618
|
+
setStatus("connecting");
|
|
2619
|
+
return;
|
|
2620
|
+
}
|
|
2621
|
+
if (!connectModalOpen && address) {
|
|
2622
|
+
toLoginInWallet(address);
|
|
2623
|
+
return;
|
|
2624
|
+
}
|
|
2625
|
+
if (!connectModalOpen && !address) {
|
|
2626
|
+
setStatus("start");
|
|
2627
|
+
}
|
|
2628
|
+
}, [connectModalOpen, address]);
|
|
2629
|
+
useEffect10(() => {
|
|
2630
|
+
if (openConnectModal && !isConnected && !inited) {
|
|
2631
|
+
openConnectModal && openConnectModal();
|
|
2632
|
+
setInited(true);
|
|
2633
|
+
}
|
|
2634
|
+
}, [openConnectModal, inited]);
|
|
2635
|
+
const toLoginInWallet = async (address2) => {
|
|
2636
|
+
if (statusRef.current != "start" && statusRef.current != "connecting") return;
|
|
2637
|
+
try {
|
|
2638
|
+
if (!address2) {
|
|
2639
|
+
throw new Error("Wallet address is empty");
|
|
2640
|
+
}
|
|
2641
|
+
setStatus("nonce");
|
|
2642
|
+
const res = type == "bind" ? await getWalletInitApi({
|
|
2643
|
+
address: address2,
|
|
2644
|
+
type: "EVM"
|
|
2645
|
+
}) : await getWalletNonceApi({ address: address2, type: "EVM" });
|
|
2646
|
+
if (!isSuccess(res)) {
|
|
2647
|
+
throw new Error(res.message);
|
|
2648
|
+
}
|
|
2649
|
+
setNonce(res.data.nonce);
|
|
2650
|
+
} catch (error2) {
|
|
2651
|
+
console.error("toLoginInWallet", error2);
|
|
2652
|
+
setStatus("error");
|
|
2653
|
+
setError(error2.message);
|
|
2654
|
+
}
|
|
2655
|
+
};
|
|
2656
|
+
const signature = useCallback4(async () => {
|
|
2657
|
+
if (!nonce || status != "nonce") {
|
|
2658
|
+
return;
|
|
2659
|
+
}
|
|
2660
|
+
try {
|
|
2661
|
+
const signer = await getEthersSigner(config);
|
|
2662
|
+
if (!signer) return;
|
|
2663
|
+
matchlog_default.log("signature", nonce, status);
|
|
2664
|
+
if (!address) {
|
|
2665
|
+
throw new Error("Wallet address is empty");
|
|
2666
|
+
}
|
|
2667
|
+
setStatus("signer");
|
|
2668
|
+
const params = {
|
|
2669
|
+
domain: window.location.host,
|
|
2670
|
+
address,
|
|
2671
|
+
statement: "By signing, you are proving you own this wallet and logging in. This does not initiate a transaction or cost any fees.",
|
|
2672
|
+
uri: window.location.origin,
|
|
2673
|
+
nonce,
|
|
2674
|
+
version: "1",
|
|
2675
|
+
chainId
|
|
2676
|
+
};
|
|
2677
|
+
const message = new SiweMessage({ ...params });
|
|
2678
|
+
const signature2 = await signer.signMessage(message.prepareMessage());
|
|
2679
|
+
const obj = {
|
|
2680
|
+
type: "EVM",
|
|
2681
|
+
address,
|
|
2682
|
+
signature: signature2,
|
|
2683
|
+
message: `${message.prepareMessage()}`,
|
|
2684
|
+
connector_type: connector?.type || "",
|
|
2685
|
+
wallet_client_type: connector?.name || ""
|
|
2686
|
+
};
|
|
2687
|
+
const res = type == "bind" ? await toBindWalletApi(obj) : await loginByWalletApi(obj);
|
|
2688
|
+
if (!isSuccess(res)) {
|
|
2689
|
+
throw new Error(res.message);
|
|
2690
|
+
}
|
|
2691
|
+
matchlog_default.log(res);
|
|
2692
|
+
setStatus("success");
|
|
2693
|
+
if (type == "bind") {
|
|
2694
|
+
events.onBind && events.onBind({
|
|
2695
|
+
type: "evm"
|
|
2696
|
+
});
|
|
2697
|
+
eventManager_default.emit("onBind", {
|
|
2698
|
+
type: "evm"
|
|
2699
|
+
});
|
|
2700
|
+
} else {
|
|
2701
|
+
await login({
|
|
2702
|
+
token: `${res.data.token_type} ${res.data.access_token}`
|
|
2703
|
+
});
|
|
2704
|
+
}
|
|
2705
|
+
onSuccess && onSuccess();
|
|
2706
|
+
} catch (error2) {
|
|
2707
|
+
console.error("signature", error2);
|
|
2708
|
+
setStatus("error");
|
|
2709
|
+
setError(error2.reason || error2.message);
|
|
2710
|
+
}
|
|
2711
|
+
}, [nonce, status, address]);
|
|
2712
|
+
useEffect10(() => {
|
|
2713
|
+
if (signature) {
|
|
2714
|
+
signature();
|
|
2715
|
+
}
|
|
2716
|
+
}, [signature]);
|
|
2717
|
+
const onError = async () => {
|
|
2718
|
+
if (isConnected) {
|
|
2719
|
+
try {
|
|
2720
|
+
await disconnectAsync();
|
|
2721
|
+
} catch (error2) {
|
|
2722
|
+
console.error("disconnectAsync", error2);
|
|
2723
|
+
}
|
|
2724
|
+
}
|
|
2725
|
+
setError("");
|
|
2726
|
+
setNonce(void 0);
|
|
2727
|
+
setStatus("start");
|
|
2728
|
+
openConnectModal?.();
|
|
2729
|
+
};
|
|
2730
|
+
const onConnect = async () => {
|
|
2731
|
+
if (isConnected) {
|
|
2732
|
+
try {
|
|
2733
|
+
await disconnectAsync();
|
|
2734
|
+
} catch (error2) {
|
|
2735
|
+
console.error("disconnectAsync", error2);
|
|
2736
|
+
}
|
|
2737
|
+
}
|
|
2738
|
+
setError("");
|
|
2739
|
+
setNonce(void 0);
|
|
2740
|
+
openConnectModal?.();
|
|
2741
|
+
};
|
|
2742
|
+
const onDisconnect = async () => {
|
|
2743
|
+
if (isConnected) {
|
|
2744
|
+
try {
|
|
2745
|
+
await disconnectAsync();
|
|
2746
|
+
} catch (error2) {
|
|
2747
|
+
console.error("disconnectAsync", error2);
|
|
2748
|
+
}
|
|
2749
|
+
}
|
|
2750
|
+
setError("");
|
|
2751
|
+
setNonce(void 0);
|
|
2752
|
+
setStatus("start");
|
|
2753
|
+
};
|
|
2754
|
+
return /* @__PURE__ */ jsx17(
|
|
2755
|
+
WalletModalContentV2,
|
|
2756
|
+
{
|
|
2757
|
+
status,
|
|
2758
|
+
onSuccess: async () => onSuccess?.(),
|
|
2759
|
+
error,
|
|
2760
|
+
onError,
|
|
2761
|
+
onConnect,
|
|
2762
|
+
onDisconnect
|
|
2763
|
+
}
|
|
2764
|
+
);
|
|
2765
|
+
}
|
|
2766
|
+
function EVMConnectModal({
|
|
2767
|
+
type = "login",
|
|
2768
|
+
onSuccess,
|
|
2769
|
+
...props
|
|
2770
|
+
}) {
|
|
2771
|
+
const intl = useIntl9();
|
|
2772
|
+
return /* @__PURE__ */ jsx17(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
2773
|
+
id: type == "bind" ? "bindWith" : "loginWith"
|
|
2774
|
+
}, {
|
|
2775
|
+
name: "EVM"
|
|
2776
|
+
}), children: /* @__PURE__ */ jsx17(WalletContent, { onSuccess, type }) });
|
|
2777
|
+
}
|
|
2778
|
+
function EVMModal(props) {
|
|
2779
|
+
return props.isOpen && /* @__PURE__ */ jsx17(EVMConnectModal, { ...props });
|
|
2780
|
+
}
|
|
2781
|
+
|
|
2782
|
+
// src/components/TRONModal/index.tsx
|
|
2783
|
+
import React6, { useEffect as useEffect12, useMemo as useMemo9, useState as useState17 } from "react";
|
|
2784
|
+
import { useIntl as useIntl10 } from "react-intl";
|
|
2785
|
+
|
|
2278
2786
|
// src/lib/tron/TronLinkAdapter.ts
|
|
2279
2787
|
var TronLinkAdapter = class {
|
|
2280
2788
|
constructor() {
|
|
@@ -2306,7 +2814,7 @@ var TronLinkAdapter = class {
|
|
|
2306
2814
|
};
|
|
2307
2815
|
|
|
2308
2816
|
// src/hooks/useTRONWallet.ts
|
|
2309
|
-
import { useEffect as
|
|
2817
|
+
import { useEffect as useEffect11, useState as useState16 } from "react";
|
|
2310
2818
|
|
|
2311
2819
|
// src/lib/tron/BitgetAdapter.ts
|
|
2312
2820
|
var BitgetAdapter = class {
|
|
@@ -2351,9 +2859,9 @@ var OKXAdapter = class {
|
|
|
2351
2859
|
// src/hooks/useTRONWallet.ts
|
|
2352
2860
|
var useTRONWallet = () => {
|
|
2353
2861
|
const wallets = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
2354
|
-
const [installedWallets, setInstalledWallets] =
|
|
2355
|
-
const [address, setAddress] =
|
|
2356
|
-
|
|
2862
|
+
const [installedWallets, setInstalledWallets] = useState16([]);
|
|
2863
|
+
const [address, setAddress] = useState16(null);
|
|
2864
|
+
useEffect11(() => {
|
|
2357
2865
|
const getInstalled = async () => {
|
|
2358
2866
|
const installed = await Promise.all(wallets.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
2359
2867
|
wallet: wallet2,
|
|
@@ -2363,11 +2871,11 @@ var useTRONWallet = () => {
|
|
|
2363
2871
|
};
|
|
2364
2872
|
getInstalled();
|
|
2365
2873
|
}, []);
|
|
2366
|
-
const [wallet, chooseWallet] =
|
|
2874
|
+
const [wallet, chooseWallet] = useState16(null);
|
|
2367
2875
|
const onConnect = async () => {
|
|
2368
2876
|
setAddress(await wallet.connect());
|
|
2369
2877
|
};
|
|
2370
|
-
|
|
2878
|
+
useEffect11(() => {
|
|
2371
2879
|
if (!wallet) {
|
|
2372
2880
|
setAddress(null);
|
|
2373
2881
|
}
|
|
@@ -2398,10 +2906,10 @@ function TRONConnectModal({
|
|
|
2398
2906
|
okx: /* @__PURE__ */ jsx18(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
2399
2907
|
};
|
|
2400
2908
|
const { events, login } = useMatch();
|
|
2401
|
-
const [status, setStatus] =
|
|
2402
|
-
const statusRef =
|
|
2403
|
-
const [error, setError] =
|
|
2404
|
-
const connected =
|
|
2909
|
+
const [status, setStatus] = useState17("");
|
|
2910
|
+
const statusRef = React6.useRef(status);
|
|
2911
|
+
const [error, setError] = useState17("");
|
|
2912
|
+
const connected = useMemo9(() => {
|
|
2405
2913
|
return !!address;
|
|
2406
2914
|
}, [address]);
|
|
2407
2915
|
const disconnect = async () => {
|
|
@@ -2469,7 +2977,7 @@ function TRONConnectModal({
|
|
|
2469
2977
|
statusRef.current = "";
|
|
2470
2978
|
}
|
|
2471
2979
|
};
|
|
2472
|
-
|
|
2980
|
+
useEffect12(() => {
|
|
2473
2981
|
if (wallet) {
|
|
2474
2982
|
console.log("onConnect");
|
|
2475
2983
|
onConnect();
|
|
@@ -2477,12 +2985,12 @@ function TRONConnectModal({
|
|
|
2477
2985
|
setStatus("");
|
|
2478
2986
|
}
|
|
2479
2987
|
}, [wallet]);
|
|
2480
|
-
|
|
2988
|
+
useEffect12(() => {
|
|
2481
2989
|
if (address) {
|
|
2482
2990
|
toLoginInWallet();
|
|
2483
2991
|
}
|
|
2484
2992
|
}, [address]);
|
|
2485
|
-
|
|
2993
|
+
useEffect12(() => {
|
|
2486
2994
|
if (!props.isOpen) {
|
|
2487
2995
|
disconnect();
|
|
2488
2996
|
}
|
|
@@ -2540,7 +3048,7 @@ function TRONModal(props) {
|
|
|
2540
3048
|
}
|
|
2541
3049
|
|
|
2542
3050
|
// src/components/TONModal/index.tsx
|
|
2543
|
-
import
|
|
3051
|
+
import React7, { useEffect as useEffect13, useState as useState18 } from "react";
|
|
2544
3052
|
import { useIntl as useIntl11 } from "react-intl";
|
|
2545
3053
|
import {
|
|
2546
3054
|
TonConnectUIProvider,
|
|
@@ -2555,15 +3063,15 @@ function WalletContent2({
|
|
|
2555
3063
|
type
|
|
2556
3064
|
}) {
|
|
2557
3065
|
const { events, login } = useMatch();
|
|
2558
|
-
const [connected, setConnected] =
|
|
3066
|
+
const [connected, setConnected] = useState18(false);
|
|
2559
3067
|
const wallet = useTonWallet();
|
|
2560
3068
|
const userFriendlyAddress = useTonAddress();
|
|
2561
3069
|
const [tonConnectUI] = useTonConnectUI();
|
|
2562
3070
|
const { state, open, close } = useTonConnectModal();
|
|
2563
|
-
const [status, setStatus] =
|
|
2564
|
-
const statusRef =
|
|
2565
|
-
const [error, setError] =
|
|
2566
|
-
|
|
3071
|
+
const [status, setStatus] = useState18("");
|
|
3072
|
+
const statusRef = React7.useRef(status);
|
|
3073
|
+
const [error, setError] = useState18("");
|
|
3074
|
+
useEffect13(() => {
|
|
2567
3075
|
const init = async () => {
|
|
2568
3076
|
if (tonConnectUI.connected) {
|
|
2569
3077
|
await tonConnectUI.disconnect();
|
|
@@ -2636,7 +3144,7 @@ function WalletContent2({
|
|
|
2636
3144
|
}
|
|
2637
3145
|
});
|
|
2638
3146
|
}, []);
|
|
2639
|
-
|
|
3147
|
+
useEffect13(() => {
|
|
2640
3148
|
if (wallet) {
|
|
2641
3149
|
setConnected(true);
|
|
2642
3150
|
console.log("Wallet connected:", wallet);
|
|
@@ -2647,7 +3155,7 @@ function WalletContent2({
|
|
|
2647
3155
|
setStatus("");
|
|
2648
3156
|
}
|
|
2649
3157
|
}, [wallet]);
|
|
2650
|
-
|
|
3158
|
+
useEffect13(() => {
|
|
2651
3159
|
console.log({
|
|
2652
3160
|
state,
|
|
2653
3161
|
wallet
|
|
@@ -2727,7 +3235,7 @@ function TONModal(props) {
|
|
|
2727
3235
|
}
|
|
2728
3236
|
|
|
2729
3237
|
// src/components/BTCModal/index.tsx
|
|
2730
|
-
import
|
|
3238
|
+
import React8, { useEffect as useEffect15, useMemo as useMemo10, useState as useState20 } from "react";
|
|
2731
3239
|
import { useIntl as useIntl12 } from "react-intl";
|
|
2732
3240
|
|
|
2733
3241
|
// src/lib/btc/UnisatAdapter.ts
|
|
@@ -2882,7 +3390,7 @@ var LeatherAdapter = class {
|
|
|
2882
3390
|
};
|
|
2883
3391
|
|
|
2884
3392
|
// src/hooks/useBTCWallet.ts
|
|
2885
|
-
import { useEffect as
|
|
3393
|
+
import { useEffect as useEffect14, useState as useState19 } from "react";
|
|
2886
3394
|
|
|
2887
3395
|
// src/lib/btc/PhantomAdapter.ts
|
|
2888
3396
|
var PhantomAdapter = class {
|
|
@@ -2920,9 +3428,9 @@ var PhantomAdapter = class {
|
|
|
2920
3428
|
// src/hooks/useBTCWallet.ts
|
|
2921
3429
|
var useBTCWallet = () => {
|
|
2922
3430
|
const wallets = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter(), new PhantomAdapter()];
|
|
2923
|
-
const [installedWallets, setInstalledWallets] =
|
|
2924
|
-
const [address, setAddress] =
|
|
2925
|
-
|
|
3431
|
+
const [installedWallets, setInstalledWallets] = useState19([]);
|
|
3432
|
+
const [address, setAddress] = useState19(null);
|
|
3433
|
+
useEffect14(() => {
|
|
2926
3434
|
const getInstalled = async () => {
|
|
2927
3435
|
const installed = await Promise.all(wallets.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
2928
3436
|
wallet: wallet2,
|
|
@@ -2932,11 +3440,11 @@ var useBTCWallet = () => {
|
|
|
2932
3440
|
};
|
|
2933
3441
|
getInstalled();
|
|
2934
3442
|
}, []);
|
|
2935
|
-
const [wallet, chooseWallet] =
|
|
3443
|
+
const [wallet, chooseWallet] = useState19(null);
|
|
2936
3444
|
const onConnect = async () => {
|
|
2937
3445
|
setAddress(await wallet.connect());
|
|
2938
3446
|
};
|
|
2939
|
-
|
|
3447
|
+
useEffect14(() => {
|
|
2940
3448
|
if (!wallet) {
|
|
2941
3449
|
setAddress(null);
|
|
2942
3450
|
}
|
|
@@ -2968,10 +3476,10 @@ function BTCConnectModal({
|
|
|
2968
3476
|
phantom: /* @__PURE__ */ jsx20(PhantomIcon, { size: isDownMd ? 36 : 40 })
|
|
2969
3477
|
};
|
|
2970
3478
|
const { events, login } = useMatch();
|
|
2971
|
-
const [status, setStatus] =
|
|
2972
|
-
const statusRef =
|
|
2973
|
-
const [error, setError] =
|
|
2974
|
-
const connected =
|
|
3479
|
+
const [status, setStatus] = useState20("");
|
|
3480
|
+
const statusRef = React8.useRef(status);
|
|
3481
|
+
const [error, setError] = useState20("");
|
|
3482
|
+
const connected = useMemo10(() => {
|
|
2975
3483
|
return !!address;
|
|
2976
3484
|
}, [address]);
|
|
2977
3485
|
const disconnect = async () => {
|
|
@@ -3035,7 +3543,7 @@ function BTCConnectModal({
|
|
|
3035
3543
|
statusRef.current = "";
|
|
3036
3544
|
}
|
|
3037
3545
|
};
|
|
3038
|
-
|
|
3546
|
+
useEffect15(() => {
|
|
3039
3547
|
if (wallet) {
|
|
3040
3548
|
console.log("onConnect");
|
|
3041
3549
|
try {
|
|
@@ -3048,12 +3556,12 @@ function BTCConnectModal({
|
|
|
3048
3556
|
setStatus("");
|
|
3049
3557
|
}
|
|
3050
3558
|
}, [wallet]);
|
|
3051
|
-
|
|
3559
|
+
useEffect15(() => {
|
|
3052
3560
|
if (address) {
|
|
3053
3561
|
toLoginInWallet();
|
|
3054
3562
|
}
|
|
3055
3563
|
}, [address]);
|
|
3056
|
-
|
|
3564
|
+
useEffect15(() => {
|
|
3057
3565
|
if (!props.isOpen) {
|
|
3058
3566
|
disconnect();
|
|
3059
3567
|
}
|
|
@@ -3118,7 +3626,7 @@ function BTCModal(props) {
|
|
|
3118
3626
|
}
|
|
3119
3627
|
|
|
3120
3628
|
// src/components/WalletModal/index.tsx
|
|
3121
|
-
import { useMemo as
|
|
3629
|
+
import { useMemo as useMemo11 } from "react";
|
|
3122
3630
|
import { useIntl as useIntl13 } from "react-intl";
|
|
3123
3631
|
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
3124
3632
|
function WalletConnectModal({
|
|
@@ -3130,7 +3638,7 @@ function WalletConnectModal({
|
|
|
3130
3638
|
const { walletMap } = useWalletConfig();
|
|
3131
3639
|
const { bind, login } = useUserInfo();
|
|
3132
3640
|
const config = useAppConfig();
|
|
3133
|
-
const methods =
|
|
3641
|
+
const methods = useMemo11(() => {
|
|
3134
3642
|
if (_methods) return _methods;
|
|
3135
3643
|
if (!config.platform) {
|
|
3136
3644
|
return [];
|
|
@@ -3162,11 +3670,11 @@ function WalletModal(props) {
|
|
|
3162
3670
|
}
|
|
3163
3671
|
|
|
3164
3672
|
// src/components/AlphaAvatar/index.tsx
|
|
3165
|
-
import { useEffect as
|
|
3673
|
+
import { useEffect as useEffect16, useState as useState21 } from "react";
|
|
3166
3674
|
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
3167
3675
|
function AlphaAvatar2({ name, size = 40, className = "" }) {
|
|
3168
|
-
const [avatar, setAvatar] =
|
|
3169
|
-
|
|
3676
|
+
const [avatar, setAvatar] = useState21(void 0);
|
|
3677
|
+
useEffect16(() => {
|
|
3170
3678
|
if (name) {
|
|
3171
3679
|
const char = name[0].toUpperCase();
|
|
3172
3680
|
setAvatar(char);
|
|
@@ -3263,8 +3771,8 @@ function WalletAsset({
|
|
|
3263
3771
|
}
|
|
3264
3772
|
|
|
3265
3773
|
// src/components/TokenSend/index.tsx
|
|
3266
|
-
import { useEffect as
|
|
3267
|
-
import { defineChain, encodeFunctionData as encodeFunctionData2, erc20Abi, http as
|
|
3774
|
+
import { useEffect as useEffect17, useMemo as useMemo12, useState as useState22 } from "react";
|
|
3775
|
+
import { defineChain, encodeFunctionData as encodeFunctionData2, erc20Abi, http as http4, parseUnits as parseUnits2 } from "viem";
|
|
3268
3776
|
import { FormattedMessage as FormattedMessage9, useIntl as useIntl14 } from "react-intl";
|
|
3269
3777
|
import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3270
3778
|
function Input2({
|
|
@@ -3301,22 +3809,22 @@ function TokenSend({
|
|
|
3301
3809
|
const intl = useIntl14();
|
|
3302
3810
|
const { createWalletClient: createWalletClient2 } = useWallet();
|
|
3303
3811
|
const isNative = token.address.toLowerCase() == NATIVE_TOKEN_ADDRESS;
|
|
3304
|
-
const chain =
|
|
3812
|
+
const chain = useMemo12(() => {
|
|
3305
3813
|
return chainList?.find((m) => m.id.toString() === token.chain_id);
|
|
3306
3814
|
}, [chainList, token.chain_id]);
|
|
3307
|
-
const walletClient =
|
|
3815
|
+
const walletClient = useMemo12(() => {
|
|
3308
3816
|
return createWalletClient2({
|
|
3309
3817
|
// @ts-ignore
|
|
3310
3818
|
chain: defineChain(chain),
|
|
3311
|
-
transport:
|
|
3819
|
+
transport: http4()
|
|
3312
3820
|
});
|
|
3313
3821
|
}, [chain]);
|
|
3314
|
-
const [amount, setAmount] =
|
|
3315
|
-
const [address, setAddress] =
|
|
3316
|
-
const [loading, setLoading] =
|
|
3317
|
-
const [sending, setSending] =
|
|
3318
|
-
const [txError, setTxError] =
|
|
3319
|
-
const transaction =
|
|
3822
|
+
const [amount, setAmount] = useState22("");
|
|
3823
|
+
const [address, setAddress] = useState22("");
|
|
3824
|
+
const [loading, setLoading] = useState22(false);
|
|
3825
|
+
const [sending, setSending] = useState22(false);
|
|
3826
|
+
const [txError, setTxError] = useState22("");
|
|
3827
|
+
const transaction = useMemo12(() => {
|
|
3320
3828
|
const reg = /^0x[a-fA-F0-9]{40}$/;
|
|
3321
3829
|
if (!amount || !address || !reg.test(address)) {
|
|
3322
3830
|
return;
|
|
@@ -3347,7 +3855,7 @@ function TokenSend({
|
|
|
3347
3855
|
setLoading(false);
|
|
3348
3856
|
}
|
|
3349
3857
|
};
|
|
3350
|
-
const error =
|
|
3858
|
+
const error = useMemo12(() => {
|
|
3351
3859
|
setTxError("");
|
|
3352
3860
|
let amountError = "";
|
|
3353
3861
|
let addressError = "";
|
|
@@ -3390,7 +3898,7 @@ function TokenSend({
|
|
|
3390
3898
|
setAmount(value);
|
|
3391
3899
|
}
|
|
3392
3900
|
};
|
|
3393
|
-
const canSend =
|
|
3901
|
+
const canSend = useMemo12(() => {
|
|
3394
3902
|
return !error.amount && !error.address && amount && address;
|
|
3395
3903
|
}, [error]);
|
|
3396
3904
|
const onNext = async () => {
|
|
@@ -3400,7 +3908,7 @@ function TokenSend({
|
|
|
3400
3908
|
}
|
|
3401
3909
|
onClose();
|
|
3402
3910
|
};
|
|
3403
|
-
|
|
3911
|
+
useEffect17(() => {
|
|
3404
3912
|
const receiveMessage = (event) => {
|
|
3405
3913
|
if (event.data) {
|
|
3406
3914
|
if (event.data.source == "match-wallet") {
|
|
@@ -3532,7 +4040,7 @@ function TokenDetail({
|
|
|
3532
4040
|
}
|
|
3533
4041
|
|
|
3534
4042
|
// src/components/TokenSendList/index.tsx
|
|
3535
|
-
import { useState as
|
|
4043
|
+
import { useState as useState23 } from "react";
|
|
3536
4044
|
import { FormattedMessage as FormattedMessage11 } from "react-intl";
|
|
3537
4045
|
import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
3538
4046
|
function TokenSendList({ close }) {
|
|
@@ -3542,7 +4050,7 @@ function TokenSendList({ close }) {
|
|
|
3542
4050
|
list: walletAssets.mergedAssets
|
|
3543
4051
|
});
|
|
3544
4052
|
const { list } = useMatchChain();
|
|
3545
|
-
const [checked, setChecked] =
|
|
4053
|
+
const [checked, setChecked] = useState23();
|
|
3546
4054
|
const modal = useModal();
|
|
3547
4055
|
const onNext = () => {
|
|
3548
4056
|
checked && modal.show((props) => {
|
|
@@ -3599,7 +4107,7 @@ function TokenSendList({ close }) {
|
|
|
3599
4107
|
|
|
3600
4108
|
// src/components/TransactionList/index.tsx
|
|
3601
4109
|
import InfiniteScroll from "react-infinite-scroll-component";
|
|
3602
|
-
import { useEffect as
|
|
4110
|
+
import { useEffect as useEffect18, useMemo as useMemo13, useState as useState24 } from "react";
|
|
3603
4111
|
import { decodeFunctionData, defineChain as defineChain2, formatUnits as formatUnits2 } from "viem";
|
|
3604
4112
|
import { erc20Abi as erc20Abi2 } from "viem";
|
|
3605
4113
|
|
|
@@ -3667,8 +4175,8 @@ var Item = ({ data }) => {
|
|
|
3667
4175
|
const isOut = data.from.toLowerCase() == address.toLowerCase();
|
|
3668
4176
|
const { chain, chainId, explorerLink, formatUnits: chainFormatUnits } = useMatchChain();
|
|
3669
4177
|
const { contracts } = useContractStore_default();
|
|
3670
|
-
const [shouldRefetch, setShouldRefetch] =
|
|
3671
|
-
const transferType =
|
|
4178
|
+
const [shouldRefetch, setShouldRefetch] = useState24(true);
|
|
4179
|
+
const transferType = useMemo13(() => {
|
|
3672
4180
|
const methodId = data.input.substring(2, 10);
|
|
3673
4181
|
if (methodId == "095ea7b3") {
|
|
3674
4182
|
return "erc20_approve";
|
|
@@ -3678,7 +4186,7 @@ var Item = ({ data }) => {
|
|
|
3678
4186
|
}
|
|
3679
4187
|
return "unknown";
|
|
3680
4188
|
}, [data.input]);
|
|
3681
|
-
const to =
|
|
4189
|
+
const to = useMemo13(() => {
|
|
3682
4190
|
if (!isOut) {
|
|
3683
4191
|
return data.from;
|
|
3684
4192
|
}
|
|
@@ -3691,7 +4199,7 @@ var Item = ({ data }) => {
|
|
|
3691
4199
|
}
|
|
3692
4200
|
return data.to;
|
|
3693
4201
|
}, [data.input, transferType, data.to, isOut]);
|
|
3694
|
-
const amount =
|
|
4202
|
+
const amount = useMemo13(() => {
|
|
3695
4203
|
if (transferType == "erc20_transfer") {
|
|
3696
4204
|
const decodeData = decodeFunctionData({
|
|
3697
4205
|
abi: erc20Abi2,
|
|
@@ -3709,7 +4217,7 @@ var Item = ({ data }) => {
|
|
|
3709
4217
|
refetchInterval: shouldRefetch ? 3e3 : false,
|
|
3710
4218
|
enabled: shouldRefetch && data.source == "local"
|
|
3711
4219
|
});
|
|
3712
|
-
const status =
|
|
4220
|
+
const status = useMemo13(() => {
|
|
3713
4221
|
if (data.source == "matchain") {
|
|
3714
4222
|
switch (data.extra.status) {
|
|
3715
4223
|
case "ok":
|
|
@@ -3736,12 +4244,12 @@ var Item = ({ data }) => {
|
|
|
3736
4244
|
}
|
|
3737
4245
|
return "loading";
|
|
3738
4246
|
}, [data.extra?.status, data.source, hashQuery.data]);
|
|
3739
|
-
|
|
4247
|
+
useEffect18(() => {
|
|
3740
4248
|
if (data.hash) {
|
|
3741
4249
|
setShouldRefetch(status == "loading");
|
|
3742
4250
|
}
|
|
3743
4251
|
}, [status, data.hash]);
|
|
3744
|
-
const symbol =
|
|
4252
|
+
const symbol = useMemo13(() => {
|
|
3745
4253
|
if (transferType == "erc20_transfer") {
|
|
3746
4254
|
const contract = contracts[`${chainId}-${data.to.toLowerCase()}`];
|
|
3747
4255
|
return contract?.symbol || contract?.name || "unknown";
|
|
@@ -3801,9 +4309,9 @@ function TransactionList({
|
|
|
3801
4309
|
|
|
3802
4310
|
// src/components/ContactList/index.tsx
|
|
3803
4311
|
import { Virtuoso } from "react-virtuoso";
|
|
3804
|
-
import { useEffect as
|
|
4312
|
+
import { useEffect as useEffect19, useState as useState25 } from "react";
|
|
3805
4313
|
import { FormattedMessage as FormattedMessage13, useIntl as useIntl16 } from "react-intl";
|
|
3806
|
-
import { Fragment as
|
|
4314
|
+
import { Fragment as Fragment3, jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3807
4315
|
function ContactCard({
|
|
3808
4316
|
loading = false,
|
|
3809
4317
|
data,
|
|
@@ -3822,7 +4330,7 @@ function ContactCard({
|
|
|
3822
4330
|
] });
|
|
3823
4331
|
}
|
|
3824
4332
|
function RequestAction({ data, onSuccess }) {
|
|
3825
|
-
const [loading, setLoading] =
|
|
4333
|
+
const [loading, setLoading] = useState25(false);
|
|
3826
4334
|
const toast = useToast();
|
|
3827
4335
|
const intl = useIntl16();
|
|
3828
4336
|
const onApprove = async () => {
|
|
@@ -3846,7 +4354,7 @@ function FriendsAction({
|
|
|
3846
4354
|
data,
|
|
3847
4355
|
onSuccess
|
|
3848
4356
|
}) {
|
|
3849
|
-
const [loading, setLoading] =
|
|
4357
|
+
const [loading, setLoading] = useState25(false);
|
|
3850
4358
|
const toast = useToast();
|
|
3851
4359
|
const intl = useIntl16();
|
|
3852
4360
|
const onRemove = async () => {
|
|
@@ -3872,9 +4380,9 @@ function ContactList({
|
|
|
3872
4380
|
type = "Friend"
|
|
3873
4381
|
}) {
|
|
3874
4382
|
const { loading, totalCount, data, onLoadMore } = contact_exports.useContactList(limit, type);
|
|
3875
|
-
const [hiddenList, setHiddenList] =
|
|
4383
|
+
const [hiddenList, setHiddenList] = useState25([]);
|
|
3876
4384
|
const { address } = useWallet();
|
|
3877
|
-
|
|
4385
|
+
useEffect19(() => {
|
|
3878
4386
|
setHiddenList([]);
|
|
3879
4387
|
}, [type]);
|
|
3880
4388
|
return /* @__PURE__ */ jsx28(
|
|
@@ -3889,12 +4397,12 @@ function ContactList({
|
|
|
3889
4397
|
return /* @__PURE__ */ jsx28(ContactCard, { loading: true });
|
|
3890
4398
|
}
|
|
3891
4399
|
if (hiddenList.includes(data[index].limit_id || 0)) {
|
|
3892
|
-
return /* @__PURE__ */ jsx28(
|
|
4400
|
+
return /* @__PURE__ */ jsx28(Fragment3, {});
|
|
3893
4401
|
}
|
|
3894
4402
|
const item = data[index];
|
|
3895
4403
|
return /* @__PURE__ */ jsx28(ContactCard, { data: item, action: () => {
|
|
3896
4404
|
if (address == item.address) {
|
|
3897
|
-
return /* @__PURE__ */ jsx28(
|
|
4405
|
+
return /* @__PURE__ */ jsx28(Fragment3, {});
|
|
3898
4406
|
}
|
|
3899
4407
|
if (type == "Requests") {
|
|
3900
4408
|
return /* @__PURE__ */ jsx28(RequestAction, { data: item, onSuccess: (data2) => {
|
|
@@ -3919,19 +4427,19 @@ function ContactList({
|
|
|
3919
4427
|
|
|
3920
4428
|
// src/hooks/useMatchWallet.tsx
|
|
3921
4429
|
import { QRCode } from "react-qrcode";
|
|
3922
|
-
import { useEffect as
|
|
4430
|
+
import { useEffect as useEffect21, useMemo as useMemo15, useRef as useRef3, useState as useState27 } from "react";
|
|
3923
4431
|
import { useQuery as useQuery4 } from "@tanstack/react-query";
|
|
3924
4432
|
import { erc20Abi as erc20Abi4, formatUnits as formatUnits3 } from "viem";
|
|
3925
4433
|
import { FormattedMessage as FormattedMessage15, useIntl as useIntl18 } from "react-intl";
|
|
3926
4434
|
|
|
3927
4435
|
// src/components/ImportToken/index.tsx
|
|
3928
|
-
import { useEffect as
|
|
4436
|
+
import { useEffect as useEffect20, useMemo as useMemo14, useState as useState26 } from "react";
|
|
3929
4437
|
import { FormattedMessage as FormattedMessage14, useIntl as useIntl17 } from "react-intl";
|
|
3930
4438
|
import { useQueryClient } from "@tanstack/react-query";
|
|
3931
4439
|
import { defineChain as defineChain3, erc20Abi as erc20Abi3 } from "viem";
|
|
3932
4440
|
|
|
3933
4441
|
// src/hooks/useIsContract.ts
|
|
3934
|
-
import { createPublicClient as createPublicClient3, http as
|
|
4442
|
+
import { createPublicClient as createPublicClient3, http as http5 } from "viem";
|
|
3935
4443
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
3936
4444
|
function useIsContract({
|
|
3937
4445
|
address,
|
|
@@ -3945,7 +4453,7 @@ function useIsContract({
|
|
|
3945
4453
|
if (!address) return false;
|
|
3946
4454
|
const publicClient = createPublicClient3({
|
|
3947
4455
|
chain,
|
|
3948
|
-
transport:
|
|
4456
|
+
transport: http5()
|
|
3949
4457
|
});
|
|
3950
4458
|
const res = await publicClient.getCode({ address });
|
|
3951
4459
|
return res !== null && res !== void 0;
|
|
@@ -3957,12 +4465,12 @@ function useIsContract({
|
|
|
3957
4465
|
// src/components/ImportToken/index.tsx
|
|
3958
4466
|
import { jsx as jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3959
4467
|
function ImportToken({ close }) {
|
|
3960
|
-
const [status, setStatus] =
|
|
4468
|
+
const [status, setStatus] = useState26("");
|
|
3961
4469
|
const { token } = useUserInfo();
|
|
3962
|
-
const [address, setAddress] =
|
|
3963
|
-
const [symbol, setSymbol] =
|
|
3964
|
-
const [decimals, setDecimals] =
|
|
3965
|
-
const [error, setError] =
|
|
4470
|
+
const [address, setAddress] = useState26("");
|
|
4471
|
+
const [symbol, setSymbol] = useState26("");
|
|
4472
|
+
const [decimals, setDecimals] = useState26("");
|
|
4473
|
+
const [error, setError] = useState26({});
|
|
3966
4474
|
const { publicClient, chainId, chain } = useMatchChain();
|
|
3967
4475
|
const getContractInfo = async () => {
|
|
3968
4476
|
if (!publicClient) return;
|
|
@@ -3996,7 +4504,7 @@ function ImportToken({ close }) {
|
|
|
3996
4504
|
}
|
|
3997
4505
|
};
|
|
3998
4506
|
const intl = useIntl17();
|
|
3999
|
-
|
|
4507
|
+
useEffect20(() => {
|
|
4000
4508
|
if (address.length === 42) {
|
|
4001
4509
|
const reg = /^0x[0-9a-fA-F]{40}$/;
|
|
4002
4510
|
if (!reg.test(address)) {
|
|
@@ -4015,7 +4523,7 @@ function ImportToken({ close }) {
|
|
|
4015
4523
|
}
|
|
4016
4524
|
}
|
|
4017
4525
|
}, [address, publicClient]);
|
|
4018
|
-
const [loading, setLoading] =
|
|
4526
|
+
const [loading, setLoading] = useState26(false);
|
|
4019
4527
|
const toast = useToast();
|
|
4020
4528
|
const queryClient2 = useQueryClient();
|
|
4021
4529
|
const onImport = async () => {
|
|
@@ -4043,7 +4551,7 @@ function ImportToken({ close }) {
|
|
|
4043
4551
|
setLoading(false);
|
|
4044
4552
|
}
|
|
4045
4553
|
};
|
|
4046
|
-
const canImport =
|
|
4554
|
+
const canImport = useMemo14(() => {
|
|
4047
4555
|
if (!address) {
|
|
4048
4556
|
return false;
|
|
4049
4557
|
}
|
|
@@ -4209,12 +4717,12 @@ function useMatchWallet() {
|
|
|
4209
4717
|
};
|
|
4210
4718
|
}
|
|
4211
4719
|
function useMatchWalletRecords() {
|
|
4212
|
-
const [hasMore, setHasMore] =
|
|
4213
|
-
const [items, setItems] =
|
|
4720
|
+
const [hasMore, setHasMore] = useState27(true);
|
|
4721
|
+
const [items, setItems] = useState27([]);
|
|
4214
4722
|
const { chainId, publicClient } = useMatchChain();
|
|
4215
4723
|
const { address } = useWallet();
|
|
4216
|
-
const hasMoreRef =
|
|
4217
|
-
const nextPageParamsRef =
|
|
4724
|
+
const hasMoreRef = useRef3(hasMore);
|
|
4725
|
+
const nextPageParamsRef = useRef3(void 0);
|
|
4218
4726
|
const { contracts, setContracts } = useContractStore_default();
|
|
4219
4727
|
const fetchMoreData = async () => {
|
|
4220
4728
|
const chainIdStr = chainId ? chainId.toString() : "";
|
|
@@ -4241,7 +4749,7 @@ function useMatchWalletRecords() {
|
|
|
4241
4749
|
hasMoreRef.current = true;
|
|
4242
4750
|
fetchMoreData();
|
|
4243
4751
|
};
|
|
4244
|
-
|
|
4752
|
+
useEffect21(() => {
|
|
4245
4753
|
if (chainId && address) {
|
|
4246
4754
|
onInit();
|
|
4247
4755
|
}
|
|
@@ -4297,7 +4805,7 @@ function useMatchWalletRecords() {
|
|
|
4297
4805
|
setContracts(contractMap);
|
|
4298
4806
|
}
|
|
4299
4807
|
};
|
|
4300
|
-
const list =
|
|
4808
|
+
const list = useMemo15(() => {
|
|
4301
4809
|
const localTransactions = transactions[`${chainId}-${address}`] || [];
|
|
4302
4810
|
const removeList = localTransactions.filter((n) => items.findIndex((m) => m.hash == n.hash) >= 0);
|
|
4303
4811
|
removeList.forEach((item) => {
|
|
@@ -4339,7 +4847,7 @@ function useMatchWalletAssets({
|
|
|
4339
4847
|
chainId: chainId || 0,
|
|
4340
4848
|
...assetListOptions
|
|
4341
4849
|
});
|
|
4342
|
-
const mergedAssets =
|
|
4850
|
+
const mergedAssets = useMemo15(() => {
|
|
4343
4851
|
if (!assetListQuery.data && !importTokenQuery.data) return [];
|
|
4344
4852
|
const assetList = (assetListQuery.data || []).map((asset) => ({
|
|
4345
4853
|
...asset,
|
|
@@ -4426,7 +4934,7 @@ function useMatchWalletAssetList({
|
|
|
4426
4934
|
retry: 3
|
|
4427
4935
|
// Retry up to 3 times if failed
|
|
4428
4936
|
});
|
|
4429
|
-
const erc20Tokens =
|
|
4937
|
+
const erc20Tokens = useMemo15(() => list.filter((asset) => asset.address !== NATIVE_TOKEN_ADDRESS), [list]);
|
|
4430
4938
|
const erc20BalanceQuery = useQuery4({
|
|
4431
4939
|
queryKey: ["erc20Balances", erc20Tokens.map((token) => token.address)],
|
|
4432
4940
|
queryFn: async () => {
|
|
@@ -4454,7 +4962,7 @@ function useMatchWalletAssetList({
|
|
|
4454
4962
|
// Refresh every 15 seconds
|
|
4455
4963
|
retry: 3
|
|
4456
4964
|
});
|
|
4457
|
-
const enrichedAssets =
|
|
4965
|
+
const enrichedAssets = useMemo15(() => {
|
|
4458
4966
|
if (!list) return [];
|
|
4459
4967
|
const erc20Balances = erc20BalanceQuery.data || [];
|
|
4460
4968
|
return list.map((asset) => {
|
|
@@ -4476,7 +4984,7 @@ function useMatchWalletAssetList({
|
|
|
4476
4984
|
return { ...asset, balance, value, balanceValue };
|
|
4477
4985
|
});
|
|
4478
4986
|
}, [list, nativeBalanceQuery.data, erc20BalanceQuery.data]);
|
|
4479
|
-
|
|
4987
|
+
useEffect21(() => {
|
|
4480
4988
|
const list2 = enrichedAssets.sort((a, b) => {
|
|
4481
4989
|
if (a.address === NATIVE_TOKEN_ADDRESS) return -1;
|
|
4482
4990
|
if (b.address === NATIVE_TOKEN_ADDRESS) return 1;
|
|
@@ -4501,14 +5009,14 @@ function useMatchWalletAssetList({
|
|
|
4501
5009
|
}
|
|
4502
5010
|
|
|
4503
5011
|
// src/hooks/useReceipt.tsx
|
|
4504
|
-
import { useState as
|
|
5012
|
+
import { useState as useState28, useCallback as useCallback5, useEffect as useEffect22 } from "react";
|
|
4505
5013
|
import { useQuery as useQuery5 } from "@tanstack/react-query";
|
|
4506
|
-
import { createPublicClient as createPublicClient4, defineChain as defineChain4, http as
|
|
5014
|
+
import { createPublicClient as createPublicClient4, defineChain as defineChain4, http as http6 } from "viem";
|
|
4507
5015
|
var CACHE_TTL = 86400 * 30 * 1e3;
|
|
4508
5016
|
var MAX_CACHE_SIZE = 500;
|
|
4509
5017
|
var STORAGE_KEY = "match_receipt_logs";
|
|
4510
5018
|
function useReceiptCache() {
|
|
4511
|
-
const [cache, setCache] =
|
|
5019
|
+
const [cache, setCache] = useState28(/* @__PURE__ */ new Map());
|
|
4512
5020
|
const isLocalStorageAvailable = (() => {
|
|
4513
5021
|
try {
|
|
4514
5022
|
const testKey = "__test__";
|
|
@@ -4519,7 +5027,7 @@ function useReceiptCache() {
|
|
|
4519
5027
|
return false;
|
|
4520
5028
|
}
|
|
4521
5029
|
})();
|
|
4522
|
-
|
|
5030
|
+
useEffect22(() => {
|
|
4523
5031
|
if (isLocalStorageAvailable) {
|
|
4524
5032
|
try {
|
|
4525
5033
|
const storedData = localStorage.getItem(STORAGE_KEY);
|
|
@@ -4538,7 +5046,7 @@ function useReceiptCache() {
|
|
|
4538
5046
|
}
|
|
4539
5047
|
}
|
|
4540
5048
|
}, []);
|
|
4541
|
-
const updateLocalStorage =
|
|
5049
|
+
const updateLocalStorage = useCallback5((updatedCache) => {
|
|
4542
5050
|
if (isLocalStorageAvailable) {
|
|
4543
5051
|
try {
|
|
4544
5052
|
const storedData = localStorage.getItem(STORAGE_KEY);
|
|
@@ -4555,7 +5063,7 @@ function useReceiptCache() {
|
|
|
4555
5063
|
}
|
|
4556
5064
|
}
|
|
4557
5065
|
}, []);
|
|
4558
|
-
const set =
|
|
5066
|
+
const set = useCallback5((key, value) => {
|
|
4559
5067
|
const now = Date.now();
|
|
4560
5068
|
const newCache = new Map(cache);
|
|
4561
5069
|
newCache.forEach((entry, k) => {
|
|
@@ -4573,7 +5081,7 @@ function useReceiptCache() {
|
|
|
4573
5081
|
setCache(newCache);
|
|
4574
5082
|
updateLocalStorage(newCache);
|
|
4575
5083
|
}, [cache, updateLocalStorage]);
|
|
4576
|
-
const get =
|
|
5084
|
+
const get = useCallback5((key) => {
|
|
4577
5085
|
const entry = cache.get(key);
|
|
4578
5086
|
if (entry) {
|
|
4579
5087
|
if (Date.now() - entry.timestamp > CACHE_TTL) {
|
|
@@ -4587,7 +5095,7 @@ function useReceiptCache() {
|
|
|
4587
5095
|
}
|
|
4588
5096
|
return void 0;
|
|
4589
5097
|
}, [cache, updateLocalStorage]);
|
|
4590
|
-
const del =
|
|
5098
|
+
const del = useCallback5((key) => {
|
|
4591
5099
|
if (cache.has(key)) {
|
|
4592
5100
|
const newCache = new Map(cache);
|
|
4593
5101
|
newCache.delete(key);
|
|
@@ -4595,7 +5103,7 @@ function useReceiptCache() {
|
|
|
4595
5103
|
updateLocalStorage(newCache);
|
|
4596
5104
|
}
|
|
4597
5105
|
}, [cache, updateLocalStorage]);
|
|
4598
|
-
const clear =
|
|
5106
|
+
const clear = useCallback5(() => {
|
|
4599
5107
|
setCache(/* @__PURE__ */ new Map());
|
|
4600
5108
|
if (isLocalStorageAvailable) {
|
|
4601
5109
|
localStorage.removeItem(STORAGE_KEY);
|
|
@@ -4610,7 +5118,7 @@ function useReceipt2({
|
|
|
4610
5118
|
const { list } = useMatchChain();
|
|
4611
5119
|
const cache = useReceiptCache();
|
|
4612
5120
|
const chain = list?.find((item) => item.id === chainId);
|
|
4613
|
-
const [shouldRefetch, setShouldRefetch] =
|
|
5121
|
+
const [shouldRefetch, setShouldRefetch] = useState28(true);
|
|
4614
5122
|
const query = useQuery5({
|
|
4615
5123
|
queryKey: ["match-tx-receipt", hash, chain],
|
|
4616
5124
|
queryFn: async () => {
|
|
@@ -4622,7 +5130,7 @@ function useReceipt2({
|
|
|
4622
5130
|
try {
|
|
4623
5131
|
const publicClient = createPublicClient4({
|
|
4624
5132
|
chain: defineChain4(chain),
|
|
4625
|
-
transport:
|
|
5133
|
+
transport: http6()
|
|
4626
5134
|
});
|
|
4627
5135
|
const receipt = await publicClient.getTransactionReceipt({ hash });
|
|
4628
5136
|
if (!receipt) {
|
|
@@ -4636,7 +5144,7 @@ function useReceipt2({
|
|
|
4636
5144
|
},
|
|
4637
5145
|
refetchInterval: shouldRefetch ? 1e4 : false
|
|
4638
5146
|
});
|
|
4639
|
-
|
|
5147
|
+
useEffect22(() => {
|
|
4640
5148
|
if (query.data) {
|
|
4641
5149
|
setShouldRefetch(false);
|
|
4642
5150
|
}
|
|
@@ -4645,14 +5153,14 @@ function useReceipt2({
|
|
|
4645
5153
|
}
|
|
4646
5154
|
|
|
4647
5155
|
// src/hooks/useTransaction.tsx
|
|
4648
|
-
import { useState as
|
|
5156
|
+
import { useState as useState29, useCallback as useCallback6, useEffect as useEffect23 } from "react";
|
|
4649
5157
|
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
4650
|
-
import { createPublicClient as createPublicClient5, defineChain as defineChain5, http as
|
|
5158
|
+
import { createPublicClient as createPublicClient5, defineChain as defineChain5, http as http7 } from "viem";
|
|
4651
5159
|
var CACHE_TTL2 = 86400 * 30 * 1e3;
|
|
4652
5160
|
var MAX_CACHE_SIZE2 = 500;
|
|
4653
5161
|
var STORAGE_KEY2 = "match_transaction_logs";
|
|
4654
5162
|
function useTransactionCache() {
|
|
4655
|
-
const [cache, setCache] =
|
|
5163
|
+
const [cache, setCache] = useState29(/* @__PURE__ */ new Map());
|
|
4656
5164
|
const isLocalStorageAvailable = (() => {
|
|
4657
5165
|
try {
|
|
4658
5166
|
const testKey = "__test__";
|
|
@@ -4663,7 +5171,7 @@ function useTransactionCache() {
|
|
|
4663
5171
|
return false;
|
|
4664
5172
|
}
|
|
4665
5173
|
})();
|
|
4666
|
-
|
|
5174
|
+
useEffect23(() => {
|
|
4667
5175
|
if (isLocalStorageAvailable) {
|
|
4668
5176
|
try {
|
|
4669
5177
|
const storedData = localStorage.getItem(STORAGE_KEY2);
|
|
@@ -4682,7 +5190,7 @@ function useTransactionCache() {
|
|
|
4682
5190
|
}
|
|
4683
5191
|
}
|
|
4684
5192
|
}, []);
|
|
4685
|
-
const updateLocalStorage =
|
|
5193
|
+
const updateLocalStorage = useCallback6((updatedCache) => {
|
|
4686
5194
|
if (isLocalStorageAvailable) {
|
|
4687
5195
|
try {
|
|
4688
5196
|
const storedData = localStorage.getItem(STORAGE_KEY2);
|
|
@@ -4699,7 +5207,7 @@ function useTransactionCache() {
|
|
|
4699
5207
|
}
|
|
4700
5208
|
}
|
|
4701
5209
|
}, []);
|
|
4702
|
-
const set =
|
|
5210
|
+
const set = useCallback6((key, value) => {
|
|
4703
5211
|
const now = Date.now();
|
|
4704
5212
|
const newCache = new Map(cache);
|
|
4705
5213
|
newCache.forEach((entry, k) => {
|
|
@@ -4717,7 +5225,7 @@ function useTransactionCache() {
|
|
|
4717
5225
|
setCache(newCache);
|
|
4718
5226
|
updateLocalStorage(newCache);
|
|
4719
5227
|
}, [cache, updateLocalStorage]);
|
|
4720
|
-
const get =
|
|
5228
|
+
const get = useCallback6((key) => {
|
|
4721
5229
|
const entry = cache.get(key);
|
|
4722
5230
|
if (entry) {
|
|
4723
5231
|
if (Date.now() - entry.timestamp > CACHE_TTL2) {
|
|
@@ -4731,7 +5239,7 @@ function useTransactionCache() {
|
|
|
4731
5239
|
}
|
|
4732
5240
|
return void 0;
|
|
4733
5241
|
}, [cache, updateLocalStorage]);
|
|
4734
|
-
const del =
|
|
5242
|
+
const del = useCallback6((key) => {
|
|
4735
5243
|
if (cache.has(key)) {
|
|
4736
5244
|
const newCache = new Map(cache);
|
|
4737
5245
|
newCache.delete(key);
|
|
@@ -4739,7 +5247,7 @@ function useTransactionCache() {
|
|
|
4739
5247
|
updateLocalStorage(newCache);
|
|
4740
5248
|
}
|
|
4741
5249
|
}, [cache, updateLocalStorage]);
|
|
4742
|
-
const clear =
|
|
5250
|
+
const clear = useCallback6(() => {
|
|
4743
5251
|
setCache(/* @__PURE__ */ new Map());
|
|
4744
5252
|
if (isLocalStorageAvailable) {
|
|
4745
5253
|
localStorage.removeItem(STORAGE_KEY2);
|
|
@@ -4754,7 +5262,7 @@ function useTransaction({
|
|
|
4754
5262
|
const { list } = useMatchChain();
|
|
4755
5263
|
const cache = useTransactionCache();
|
|
4756
5264
|
const chain = list?.find((item) => item.id === chainId);
|
|
4757
|
-
const [shouldRefetch, setShouldRefetch] =
|
|
5265
|
+
const [shouldRefetch, setShouldRefetch] = useState29(true);
|
|
4758
5266
|
const query = useQuery6({
|
|
4759
5267
|
queryKey: ["match-tx-transaction", hash, chain],
|
|
4760
5268
|
queryFn: async () => {
|
|
@@ -4766,7 +5274,7 @@ function useTransaction({
|
|
|
4766
5274
|
try {
|
|
4767
5275
|
const publicClient = createPublicClient5({
|
|
4768
5276
|
chain: defineChain5(chain),
|
|
4769
|
-
transport:
|
|
5277
|
+
transport: http7()
|
|
4770
5278
|
});
|
|
4771
5279
|
const transaction = await publicClient.getTransaction({ hash });
|
|
4772
5280
|
if (!transaction) {
|
|
@@ -4780,7 +5288,7 @@ function useTransaction({
|
|
|
4780
5288
|
},
|
|
4781
5289
|
refetchInterval: shouldRefetch ? 1e4 : false
|
|
4782
5290
|
});
|
|
4783
|
-
|
|
5291
|
+
useEffect23(() => {
|
|
4784
5292
|
if (query.data) {
|
|
4785
5293
|
setShouldRefetch(false);
|
|
4786
5294
|
}
|
|
@@ -4829,7 +5337,7 @@ var useWalletModalStore = create5((set) => ({
|
|
|
4829
5337
|
}));
|
|
4830
5338
|
|
|
4831
5339
|
// src/components/CEXBindModal/index.tsx
|
|
4832
|
-
import { useEffect as
|
|
5340
|
+
import { useEffect as useEffect24, useMemo as useMemo16, useState as useState30 } from "react";
|
|
4833
5341
|
import { FormattedMessage as FormattedMessage16, useIntl as useIntl19 } from "react-intl";
|
|
4834
5342
|
import { jsx as jsx31, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
4835
5343
|
function CEXBindModal({
|
|
@@ -4840,16 +5348,16 @@ function CEXBindModal({
|
|
|
4840
5348
|
}) {
|
|
4841
5349
|
const intl = useIntl19();
|
|
4842
5350
|
const { events } = useMatch();
|
|
4843
|
-
const [APIPassphrase, setAPIPassphrase] =
|
|
5351
|
+
const [APIPassphrase, setAPIPassphrase] = useState30("");
|
|
4844
5352
|
const { refreshOverview } = useUserInfo();
|
|
4845
|
-
const [loading, setLoading] =
|
|
4846
|
-
const [key, setKey] =
|
|
4847
|
-
const [secret, setSecret] =
|
|
4848
|
-
const [error, setError] =
|
|
4849
|
-
const needPassphrase =
|
|
5353
|
+
const [loading, setLoading] = useState30(false);
|
|
5354
|
+
const [key, setKey] = useState30("");
|
|
5355
|
+
const [secret, setSecret] = useState30("");
|
|
5356
|
+
const [error, setError] = useState30("");
|
|
5357
|
+
const needPassphrase = useMemo16(() => {
|
|
4850
5358
|
return ["bitget", "okx"].includes(type.toLowerCase());
|
|
4851
5359
|
}, [type]);
|
|
4852
|
-
|
|
5360
|
+
useEffect24(() => {
|
|
4853
5361
|
if (isOpen) {
|
|
4854
5362
|
setSecret("");
|
|
4855
5363
|
setKey("");
|
|
@@ -4943,7 +5451,7 @@ function CEXBindModal({
|
|
|
4943
5451
|
|
|
4944
5452
|
// src/context/BusinessProvider.tsx
|
|
4945
5453
|
import { useQuery as useQuery7 } from "@tanstack/react-query";
|
|
4946
|
-
import { Fragment as
|
|
5454
|
+
import { Fragment as Fragment4, jsx as jsx32, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
4947
5455
|
function BusinessProvider({ children }) {
|
|
4948
5456
|
const { overview, token } = useUserInfo();
|
|
4949
5457
|
const { type: EVMType, isOpen: EVMIsOpen, close: EVMClose } = useEVMModalStore();
|
|
@@ -4977,7 +5485,7 @@ function BusinessProvider({ children }) {
|
|
|
4977
5485
|
enabled: !!tgAppAuthCode,
|
|
4978
5486
|
refetchInterval: 1e3 * 5
|
|
4979
5487
|
});
|
|
4980
|
-
return /* @__PURE__ */ jsxs24(
|
|
5488
|
+
return /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
4981
5489
|
/* @__PURE__ */ jsx32(
|
|
4982
5490
|
EVMModal,
|
|
4983
5491
|
{
|
|
@@ -5049,7 +5557,7 @@ var Providers = ({ children }) => {
|
|
|
5049
5557
|
var context_default = Providers;
|
|
5050
5558
|
|
|
5051
5559
|
// src/hooks/useWalletInit.ts
|
|
5052
|
-
import { useEffect as
|
|
5560
|
+
import { useEffect as useEffect25, useRef as useRef4 } from "react";
|
|
5053
5561
|
|
|
5054
5562
|
// src/utils/wallet.ts
|
|
5055
5563
|
var sendMessage = ({ method, data, resolve, reject, timeout }) => {
|
|
@@ -5082,11 +5590,11 @@ function useWalletInit({
|
|
|
5082
5590
|
}) {
|
|
5083
5591
|
const { endpoints, token, setWallet, appid, refreshOverview } = useLocalStore_default();
|
|
5084
5592
|
const { setWalletReady, walletReady } = useStore_default();
|
|
5085
|
-
const iframeReadyRef =
|
|
5086
|
-
|
|
5593
|
+
const iframeReadyRef = useRef4(walletReady);
|
|
5594
|
+
useEffect25(() => {
|
|
5087
5595
|
setWallet(config);
|
|
5088
5596
|
}, [config]);
|
|
5089
|
-
|
|
5597
|
+
useEffect25(() => {
|
|
5090
5598
|
matchlog_default.log("sdk.mpc.status", walletReady, iframeReadyRef.current);
|
|
5091
5599
|
iframeReadyRef.current = walletReady;
|
|
5092
5600
|
if (iframeReadyRef.current) {
|
|
@@ -5103,7 +5611,7 @@ function useWalletInit({
|
|
|
5103
5611
|
onReady();
|
|
5104
5612
|
}
|
|
5105
5613
|
}, [walletReady]);
|
|
5106
|
-
|
|
5614
|
+
useEffect25(() => {
|
|
5107
5615
|
if (!endpoints.auth || !appid || !token || !config) {
|
|
5108
5616
|
const existingIframe = getWalletIframe();
|
|
5109
5617
|
if (existingIframe) {
|
|
@@ -5203,7 +5711,7 @@ function useWalletInit({
|
|
|
5203
5711
|
}
|
|
5204
5712
|
}
|
|
5205
5713
|
}, [endpoints.auth, appid, token, config]);
|
|
5206
|
-
|
|
5714
|
+
useEffect25(() => {
|
|
5207
5715
|
const messageHandle = async (e) => {
|
|
5208
5716
|
if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
|
|
5209
5717
|
return;
|
|
@@ -5284,7 +5792,7 @@ function useWalletInit({
|
|
|
5284
5792
|
}
|
|
5285
5793
|
|
|
5286
5794
|
// src/hooks/useInit.tsx
|
|
5287
|
-
import { useEffect as
|
|
5795
|
+
import { useEffect as useEffect26, useRef as useRef5 } from "react";
|
|
5288
5796
|
function useInit({
|
|
5289
5797
|
theme,
|
|
5290
5798
|
appid,
|
|
@@ -5304,24 +5812,24 @@ function useInit({
|
|
|
5304
5812
|
locale: realLocale
|
|
5305
5813
|
} = useLocalStore_default();
|
|
5306
5814
|
const walletModalStore = useWalletModalStore();
|
|
5307
|
-
const overviewLoadingRef =
|
|
5815
|
+
const overviewLoadingRef = useRef5(false);
|
|
5308
5816
|
const searchParams = new URLSearchParams(window.location.search);
|
|
5309
5817
|
const matchToken = searchParams.get("matchToken");
|
|
5310
5818
|
const matchidt = searchParams.get("matchidt");
|
|
5311
5819
|
const realEndpoints = endpoints || env_default.endpoints;
|
|
5312
|
-
|
|
5820
|
+
useEffect26(() => {
|
|
5313
5821
|
setTheme(theme);
|
|
5314
5822
|
}, [theme]);
|
|
5315
|
-
|
|
5823
|
+
useEffect26(() => {
|
|
5316
5824
|
setAppid(appid);
|
|
5317
5825
|
}, [appid]);
|
|
5318
|
-
|
|
5826
|
+
useEffect26(() => {
|
|
5319
5827
|
setEndpoints(realEndpoints);
|
|
5320
5828
|
}, [realEndpoints]);
|
|
5321
|
-
|
|
5829
|
+
useEffect26(() => {
|
|
5322
5830
|
setLocale(locale || "en");
|
|
5323
5831
|
}, [locale]);
|
|
5324
|
-
|
|
5832
|
+
useEffect26(() => {
|
|
5325
5833
|
if (matchToken) {
|
|
5326
5834
|
const tokenData = JSON.parse(atob(matchToken));
|
|
5327
5835
|
if (tokenData && tokenData.mid && tokenData.token) {
|
|
@@ -5332,7 +5840,7 @@ function useInit({
|
|
|
5332
5840
|
}
|
|
5333
5841
|
}
|
|
5334
5842
|
}, [matchToken]);
|
|
5335
|
-
|
|
5843
|
+
useEffect26(() => {
|
|
5336
5844
|
if (matchidt) {
|
|
5337
5845
|
const tokenData = decodeURIComponent(matchidt);
|
|
5338
5846
|
const data = JSON.parse(decodeBase64(tokenData));
|
|
@@ -5362,7 +5870,7 @@ function useInit({
|
|
|
5362
5870
|
}
|
|
5363
5871
|
}
|
|
5364
5872
|
}, [matchidt]);
|
|
5365
|
-
|
|
5873
|
+
useEffect26(() => {
|
|
5366
5874
|
const onLoginMessage = (event) => {
|
|
5367
5875
|
const res = event.data;
|
|
5368
5876
|
if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
|
|
@@ -5399,7 +5907,7 @@ function useInit({
|
|
|
5399
5907
|
overviewLoadingRef.current = false;
|
|
5400
5908
|
}
|
|
5401
5909
|
};
|
|
5402
|
-
|
|
5910
|
+
useEffect26(() => {
|
|
5403
5911
|
if (token) {
|
|
5404
5912
|
loadOverview();
|
|
5405
5913
|
}
|
|
@@ -6337,7 +6845,7 @@ function useUserInfo() {
|
|
|
6337
6845
|
const getRedirectUri = () => {
|
|
6338
6846
|
return encodeURIComponent(window.location.href);
|
|
6339
6847
|
};
|
|
6340
|
-
const isLogin =
|
|
6848
|
+
const isLogin = useMemo17(() => !!token && !!overview, [token, overview]);
|
|
6341
6849
|
const logout = async () => {
|
|
6342
6850
|
try {
|
|
6343
6851
|
await toLogoutApi();
|
|
@@ -6672,10 +7180,10 @@ __export(contact_exports, {
|
|
|
6672
7180
|
});
|
|
6673
7181
|
import { useInfiniteQuery, useQuery as useQuery10, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
6674
7182
|
import last from "lodash/last";
|
|
6675
|
-
import { useEffect as
|
|
7183
|
+
import { useEffect as useEffect28, useMemo as useMemo18, useRef as useRef6 } from "react";
|
|
6676
7184
|
function useContactList(page_size = 10, type = "Friend") {
|
|
6677
7185
|
const { token } = useLocalStore_default();
|
|
6678
|
-
const limitIdRef =
|
|
7186
|
+
const limitIdRef = useRef6(0);
|
|
6679
7187
|
const queryClient2 = useQueryClient3();
|
|
6680
7188
|
const contactQuery = useInfiniteQuery({
|
|
6681
7189
|
queryKey: ["matchid-contacts-list", type, token],
|
|
@@ -6697,7 +7205,7 @@ function useContactList(page_size = 10, type = "Friend") {
|
|
|
6697
7205
|
return allPages.length >= lastPageNum ? void 0 : allPages.length + 1;
|
|
6698
7206
|
}
|
|
6699
7207
|
});
|
|
6700
|
-
|
|
7208
|
+
useEffect28(() => {
|
|
6701
7209
|
if (!contactQuery.data?.pages || contactQuery.data?.pages.length == 0) {
|
|
6702
7210
|
limitIdRef.current = 0;
|
|
6703
7211
|
} else {
|
|
@@ -6711,10 +7219,10 @@ function useContactList(page_size = 10, type = "Friend") {
|
|
|
6711
7219
|
limitIdRef.current = lastItem?.limit_id || 0;
|
|
6712
7220
|
}
|
|
6713
7221
|
}, [contactQuery.data?.pages]);
|
|
6714
|
-
|
|
7222
|
+
useEffect28(() => {
|
|
6715
7223
|
console.log("contactQuery.data", contactQuery.data);
|
|
6716
7224
|
}, [contactQuery.data]);
|
|
6717
|
-
const data =
|
|
7225
|
+
const data = useMemo18(() => {
|
|
6718
7226
|
return (contactQuery.data?.pages ?? []).reduce(
|
|
6719
7227
|
(a, b) => {
|
|
6720
7228
|
return a.concat(b?.items ?? []);
|
|
@@ -6828,4 +7336,4 @@ export {
|
|
|
6828
7336
|
MatchProvider,
|
|
6829
7337
|
useMatch
|
|
6830
7338
|
};
|
|
6831
|
-
//# sourceMappingURL=chunk-
|
|
7339
|
+
//# sourceMappingURL=chunk-CLMSEFOV.mjs.map
|