@matchain/matchid-sdk-react 0.1.44-alpha.4 → 0.1.44-alpha.6
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/assets/icon/index.d.mts +1 -1
- package/dist/assets/icon/index.d.ts +1 -1
- package/dist/{chunk-24AMOG53.mjs → chunk-WNLUMXC7.mjs} +2 -2
- package/dist/{chunk-RAX4G26O.mjs → chunk-XN7LSOI7.mjs} +138 -47
- package/dist/chunk-XN7LSOI7.mjs.map +1 -0
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.js +107 -28
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +2 -2
- package/dist/hooks/api/index.d.mts +2 -2
- package/dist/hooks/api/index.d.ts +2 -2
- package/dist/hooks/api/index.js +24 -18
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +3 -3
- package/dist/hooks/index.d.mts +2 -2
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.js +45 -32
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +2 -2
- package/dist/{index-x432SkFJ.d.ts → index-BlEZbcLQ.d.ts} +1 -1
- package/dist/{index-DzVjb4K-.d.ts → index-C3jFoWRx.d.ts} +3 -2
- package/dist/{index-DnK10Gz7.d.mts → index-CI39w5wj.d.mts} +4 -1
- package/dist/{index-DAj3aVo6.d.mts → index-CYmxvLZ0.d.mts} +3 -2
- package/dist/{index-ivTptZeo.d.ts → index-DS7SWbPe.d.ts} +4 -1
- package/dist/{index-BQDL8XkC.d.ts → index-DYJIwNhC.d.ts} +1 -1
- package/dist/{index-C1NfMaCm.d.mts → index-RwnmlYR_.d.mts} +1 -1
- package/dist/{index-Rb-jdkzE.d.mts → index-rWzOcTWj.d.mts} +1 -1
- package/dist/index.css +5 -4
- package/dist/index.d.mts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +161 -70
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/types/index.d.mts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/{types-E2MeOwmE.d.mts → types-cM1c-GDc.d.mts} +7 -1
- package/dist/{types-E2MeOwmE.d.ts → types-cM1c-GDc.d.ts} +7 -1
- package/example/dist/assets/TransportWebHID-B92GXP0w.js +1 -0
- package/example/dist/assets/bignumber-Bn3E8wYl.js +10 -0
- package/example/dist/assets/ccip-CBHFCdkU.js +1 -0
- package/example/dist/assets/draggabilly-CLvmxSn-.js +14 -0
- package/example/dist/assets/index-2f4kBMap.js +1 -0
- package/example/dist/assets/index-8uKm8vlV.js +303 -0
- package/example/dist/assets/index-B628P4Pl.js +1 -0
- package/example/dist/assets/index-BHE8v9OY.js +3 -0
- package/example/dist/assets/index-CWt0Kxp-.js +3 -0
- package/example/dist/assets/index-CvZtcbs0.js +1283 -0
- package/example/dist/assets/index-Dp__7a7R.js +179 -0
- package/example/dist/assets/index-DvlQmnc9.js +1 -0
- package/example/dist/assets/index-g0UHhCzn.css +1 -0
- package/example/dist/assets/index-lJxfSkQk.js +569 -0
- package/example/dist/assets/inherits_browser-BlmhoU4v.js +1 -0
- package/example/dist/assets/solanaEmbed.esm-D8OwJWHg.js +38 -0
- package/example/dist/index.html +14 -0
- package/example/src/App.tsx +65 -54
- package/example/src/config/chains/matchMain.ts +1 -1
- package/example/src/config/chains/matchTest.ts +1 -1
- package/example/src/pages/User/components/BindListModal.tsx +1 -1
- package/example/src/pages/User/components/PohListModal.tsx +1 -1
- package/example/src/pages/User/index.tsx +1 -17
- package/example/src/pages/Wallet.tsx +122 -49
- package/package.json +1 -1
- package/dist/chunk-RAX4G26O.mjs.map +0 -1
- /package/dist/{chunk-24AMOG53.mjs.map → chunk-WNLUMXC7.mjs.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React, { CSSProperties } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { m as IconProps$1 } from '../../types-cM1c-GDc.mjs';
|
|
4
4
|
|
|
5
5
|
declare function BackIcon({ color, size, className, style }: {
|
|
6
6
|
color?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React, { CSSProperties } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { m as IconProps$1 } from '../../types-cM1c-GDc.js';
|
|
4
4
|
|
|
5
5
|
declare function BackIcon({ color, size, className, style }: {
|
|
6
6
|
color?: string;
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
unBindWalletApi,
|
|
10
10
|
useUserInfo,
|
|
11
11
|
verifyPohApi
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-XN7LSOI7.mjs";
|
|
13
13
|
import {
|
|
14
14
|
__export
|
|
15
15
|
} from "./chunk-J5LGTIGS.mjs";
|
|
@@ -90,4 +90,4 @@ export {
|
|
|
90
90
|
user_exports,
|
|
91
91
|
api_exports
|
|
92
92
|
};
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
93
|
+
//# sourceMappingURL=chunk-WNLUMXC7.mjs.map
|
|
@@ -99,7 +99,7 @@ var localStore = useLocalStore;
|
|
|
99
99
|
var useLocalStore_default = useLocalStore;
|
|
100
100
|
|
|
101
101
|
// src/hooks/useUserInfo.tsx
|
|
102
|
-
import { useMemo as
|
|
102
|
+
import { useMemo as useMemo13 } from "react";
|
|
103
103
|
|
|
104
104
|
// src/api/request.ts
|
|
105
105
|
import axios from "axios";
|
|
@@ -431,6 +431,12 @@ var toBindWalletApi = ({
|
|
|
431
431
|
data: { type, address, signature, message, connector_type, wallet_client_type }
|
|
432
432
|
});
|
|
433
433
|
};
|
|
434
|
+
var getAppConfigApi = () => {
|
|
435
|
+
return retryRequest({
|
|
436
|
+
url: `/api/v1/app/config`,
|
|
437
|
+
method: "GET"
|
|
438
|
+
});
|
|
439
|
+
};
|
|
434
440
|
|
|
435
441
|
// src/MatchContext.tsx
|
|
436
442
|
import { createContext, useContext } from "react";
|
|
@@ -852,6 +858,7 @@ import { create as create3 } from "zustand";
|
|
|
852
858
|
// src/hooks/useConfig.tsx
|
|
853
859
|
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
854
860
|
var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
861
|
+
var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
855
862
|
function useWalletConfig() {
|
|
856
863
|
const isDownMd = useDownMd();
|
|
857
864
|
const walletMap = {
|
|
@@ -1230,8 +1237,30 @@ function Popover({
|
|
|
1230
1237
|
}
|
|
1231
1238
|
|
|
1232
1239
|
// src/components/LoginBox/index.tsx
|
|
1233
|
-
import { useState as useState9 } from "react";
|
|
1240
|
+
import { useMemo as useMemo5, useState as useState9 } from "react";
|
|
1234
1241
|
import { FormattedMessage as FormattedMessage5, useIntl as useIntl6 } from "react-intl";
|
|
1242
|
+
|
|
1243
|
+
// src/hooks/useAppConfig.ts
|
|
1244
|
+
import { useQuery } from "@tanstack/react-query";
|
|
1245
|
+
function useAppConfig() {
|
|
1246
|
+
const query = useQuery({
|
|
1247
|
+
queryKey: ["appConfig"],
|
|
1248
|
+
queryFn: async () => {
|
|
1249
|
+
const res = await getAppConfigApi();
|
|
1250
|
+
if (!isSuccess(res)) {
|
|
1251
|
+
return null;
|
|
1252
|
+
}
|
|
1253
|
+
return res.data;
|
|
1254
|
+
}
|
|
1255
|
+
});
|
|
1256
|
+
return {
|
|
1257
|
+
isFetched: query.isFetched,
|
|
1258
|
+
isLoading: query.isLoading,
|
|
1259
|
+
...query.data
|
|
1260
|
+
};
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
// src/components/LoginBox/index.tsx
|
|
1235
1264
|
import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1236
1265
|
var RecommendItem = ({
|
|
1237
1266
|
icon,
|
|
@@ -1273,21 +1302,54 @@ var RecommendItem = ({
|
|
|
1273
1302
|
] });
|
|
1274
1303
|
};
|
|
1275
1304
|
function LoginBox({
|
|
1276
|
-
recommendMethods
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
"google"
|
|
1280
|
-
],
|
|
1281
|
-
methods = [
|
|
1282
|
-
"telegram",
|
|
1283
|
-
"twitter",
|
|
1284
|
-
"github",
|
|
1285
|
-
"linkedin",
|
|
1286
|
-
"discord"
|
|
1287
|
-
],
|
|
1288
|
-
walletMethods = DEFAULT_WALLET_METHODS,
|
|
1305
|
+
recommendMethods,
|
|
1306
|
+
methods,
|
|
1307
|
+
walletMethods,
|
|
1289
1308
|
inModal = false
|
|
1290
1309
|
}) {
|
|
1310
|
+
const config = useAppConfig();
|
|
1311
|
+
const methodConfig = useMemo5(() => {
|
|
1312
|
+
if (recommendMethods || methods || walletMethods) {
|
|
1313
|
+
return {
|
|
1314
|
+
recommendMethods: recommendMethods || [],
|
|
1315
|
+
methods: methods || [],
|
|
1316
|
+
walletMethods: walletMethods || []
|
|
1317
|
+
};
|
|
1318
|
+
}
|
|
1319
|
+
if (!config.platform) {
|
|
1320
|
+
return {
|
|
1321
|
+
recommendMethods: [],
|
|
1322
|
+
methods: [],
|
|
1323
|
+
walletMethods: []
|
|
1324
|
+
};
|
|
1325
|
+
}
|
|
1326
|
+
const platform = config.platform.map((p) => {
|
|
1327
|
+
if (p == "x" || p == "X") {
|
|
1328
|
+
return "twitter";
|
|
1329
|
+
}
|
|
1330
|
+
return p.toLowerCase();
|
|
1331
|
+
});
|
|
1332
|
+
console.log("platform", platform);
|
|
1333
|
+
const walletMethodList = WALLET_METHODS.filter((m) => platform.includes(m));
|
|
1334
|
+
let recommendMethodList = walletMethodList.length > 0 ? ["wallet"] : [];
|
|
1335
|
+
let methodList = [];
|
|
1336
|
+
const otherMethodList = platform.filter((m) => !walletMethodList.includes(m));
|
|
1337
|
+
if (otherMethodList.length > 0) {
|
|
1338
|
+
const recommendMethodListLength = recommendMethodList.length;
|
|
1339
|
+
const maxRecommendMethodListLength = 3;
|
|
1340
|
+
if (recommendMethodListLength < maxRecommendMethodListLength) {
|
|
1341
|
+
recommendMethodList = recommendMethodList.concat(otherMethodList.slice(0, Math.min(maxRecommendMethodListLength - recommendMethodListLength, otherMethodList.length)));
|
|
1342
|
+
methodList = otherMethodList.slice(maxRecommendMethodListLength - recommendMethodListLength);
|
|
1343
|
+
} else {
|
|
1344
|
+
methodList = otherMethodList;
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1347
|
+
return {
|
|
1348
|
+
recommendMethods: recommendMethodList,
|
|
1349
|
+
methods: methodList,
|
|
1350
|
+
walletMethods: walletMethodList
|
|
1351
|
+
};
|
|
1352
|
+
}, [config.platform, recommendMethods, methods, walletMethods]);
|
|
1291
1353
|
const [emailOpen, setEmailOpen] = useState9(false);
|
|
1292
1354
|
const { login } = useUserInfo();
|
|
1293
1355
|
const [showWallet, setShowWallet] = useState9(false);
|
|
@@ -1351,7 +1413,7 @@ function LoginBox({
|
|
|
1351
1413
|
const { walletMap } = useWalletConfig();
|
|
1352
1414
|
return /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
1353
1415
|
(!inModal || !emailOpen) && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-box", children: [
|
|
1354
|
-
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-list", children: recommendMethods.map((m) => {
|
|
1416
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
|
|
1355
1417
|
return /* @__PURE__ */ jsx13(
|
|
1356
1418
|
RecommendItem,
|
|
1357
1419
|
{
|
|
@@ -1361,7 +1423,7 @@ function LoginBox({
|
|
|
1361
1423
|
showChildren: m == "wallet" && showWallet,
|
|
1362
1424
|
children: m == "wallet" && /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
1363
1425
|
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
1364
|
-
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-list", children: walletMethods.map((n) => {
|
|
1426
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
|
|
1365
1427
|
const m2 = walletMap[n];
|
|
1366
1428
|
return /* @__PURE__ */ jsxs9(
|
|
1367
1429
|
"div",
|
|
@@ -1406,9 +1468,9 @@ function LoginBox({
|
|
|
1406
1468
|
m
|
|
1407
1469
|
);
|
|
1408
1470
|
}) }),
|
|
1409
|
-
methods.length > 0 && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-other", children: [
|
|
1471
|
+
methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-other", children: [
|
|
1410
1472
|
/* @__PURE__ */ jsx13("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx13(FormattedMessage5, { id: "otherLoginMethods" }) }),
|
|
1411
|
-
/* @__PURE__ */ jsx13("div", { className: "matchid-login-method-box", children: methods.map((m) => {
|
|
1473
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
|
|
1412
1474
|
return /* @__PURE__ */ jsx13(
|
|
1413
1475
|
"div",
|
|
1414
1476
|
{
|
|
@@ -1616,7 +1678,7 @@ function LoginButton({
|
|
|
1616
1678
|
}
|
|
1617
1679
|
|
|
1618
1680
|
// src/components/UsernameModal/index.tsx
|
|
1619
|
-
import { useEffect as useEffect8, useMemo as
|
|
1681
|
+
import { useEffect as useEffect8, useMemo as useMemo6, useState as useState12 } from "react";
|
|
1620
1682
|
|
|
1621
1683
|
// src/assets/icon/InfoRoundIcon.tsx
|
|
1622
1684
|
import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
@@ -1669,10 +1731,10 @@ function UsernameModal({
|
|
|
1669
1731
|
setError("");
|
|
1670
1732
|
}
|
|
1671
1733
|
}, [isOpen]);
|
|
1672
|
-
const isValid =
|
|
1734
|
+
const isValid = useMemo6(() => {
|
|
1673
1735
|
return isValidUsername(val);
|
|
1674
1736
|
}, [val]);
|
|
1675
|
-
const isLength =
|
|
1737
|
+
const isLength = useMemo6(() => {
|
|
1676
1738
|
return val.length >= 2 && val.length <= 32;
|
|
1677
1739
|
}, [val]);
|
|
1678
1740
|
const isSafe = isValid && isLength;
|
|
@@ -1823,7 +1885,7 @@ import "@solana/wallet-adapter-react-ui/styles.css";
|
|
|
1823
1885
|
import { useIntl as useIntl10 } from "react-intl";
|
|
1824
1886
|
|
|
1825
1887
|
// src/components/WalletModalContent/index.tsx
|
|
1826
|
-
import { useMemo as
|
|
1888
|
+
import { useMemo as useMemo7 } from "react";
|
|
1827
1889
|
|
|
1828
1890
|
// src/assets/wallet.ts
|
|
1829
1891
|
var walletErrorImage = "data:image/png;base64,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";
|
|
@@ -1844,7 +1906,7 @@ function WalletModalContent({
|
|
|
1844
1906
|
address,
|
|
1845
1907
|
connected
|
|
1846
1908
|
}) {
|
|
1847
|
-
const pageData =
|
|
1909
|
+
const pageData = useMemo7(() => {
|
|
1848
1910
|
if (status == "success") {
|
|
1849
1911
|
return {
|
|
1850
1912
|
btnText: "Disconnect Wallet",
|
|
@@ -2077,7 +2139,7 @@ function SOLModal(props) {
|
|
|
2077
2139
|
}
|
|
2078
2140
|
|
|
2079
2141
|
// src/components/TRONModal/index.tsx
|
|
2080
|
-
import React5, { useEffect as useEffect11, useMemo as
|
|
2142
|
+
import React5, { useEffect as useEffect11, useMemo as useMemo8, useState as useState15 } from "react";
|
|
2081
2143
|
import { useIntl as useIntl11 } from "react-intl";
|
|
2082
2144
|
|
|
2083
2145
|
// src/lib/tron/TronLinkAdapter.ts
|
|
@@ -2206,7 +2268,7 @@ function TRONConnectModal({
|
|
|
2206
2268
|
const [status, setStatus] = useState15("");
|
|
2207
2269
|
const statusRef = React5.useRef(status);
|
|
2208
2270
|
const [error, setError] = useState15("");
|
|
2209
|
-
const connected =
|
|
2271
|
+
const connected = useMemo8(() => {
|
|
2210
2272
|
return !!address;
|
|
2211
2273
|
}, [address]);
|
|
2212
2274
|
const disconnect = async () => {
|
|
@@ -2532,7 +2594,7 @@ function TONModal(props) {
|
|
|
2532
2594
|
}
|
|
2533
2595
|
|
|
2534
2596
|
// src/components/BTCModal/index.tsx
|
|
2535
|
-
import React7, { useEffect as useEffect14, useMemo as
|
|
2597
|
+
import React7, { useEffect as useEffect14, useMemo as useMemo9, useState as useState18 } from "react";
|
|
2536
2598
|
import { useIntl as useIntl13 } from "react-intl";
|
|
2537
2599
|
|
|
2538
2600
|
// src/lib/btc/UnisatAdapter.ts
|
|
@@ -2740,7 +2802,7 @@ function BTCConnectModal({
|
|
|
2740
2802
|
const [status, setStatus] = useState18("");
|
|
2741
2803
|
const statusRef = React7.useRef(status);
|
|
2742
2804
|
const [error, setError] = useState18("");
|
|
2743
|
-
const connected =
|
|
2805
|
+
const connected = useMemo9(() => {
|
|
2744
2806
|
return !!address;
|
|
2745
2807
|
}, [address]);
|
|
2746
2808
|
const disconnect = async () => {
|
|
@@ -2887,16 +2949,26 @@ function BTCModal(props) {
|
|
|
2887
2949
|
}
|
|
2888
2950
|
|
|
2889
2951
|
// src/components/WalletModal/index.tsx
|
|
2952
|
+
import { useMemo as useMemo10 } from "react";
|
|
2890
2953
|
import { useIntl as useIntl14 } from "react-intl";
|
|
2891
2954
|
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
2892
2955
|
function WalletConnectModal({
|
|
2893
2956
|
type,
|
|
2894
|
-
methods
|
|
2957
|
+
methods: _methods,
|
|
2895
2958
|
...props
|
|
2896
2959
|
}) {
|
|
2897
2960
|
const intl = useIntl14();
|
|
2898
2961
|
const { walletMap } = useWalletConfig();
|
|
2899
2962
|
const { bind, login } = useUserInfo();
|
|
2963
|
+
const config = useAppConfig();
|
|
2964
|
+
const methods = useMemo10(() => {
|
|
2965
|
+
if (_methods) return _methods;
|
|
2966
|
+
if (!config.platform) {
|
|
2967
|
+
return [];
|
|
2968
|
+
}
|
|
2969
|
+
const platform = config.platform.map((p) => p.toLowerCase());
|
|
2970
|
+
return WALLET_METHODS.filter((m) => platform.includes(m));
|
|
2971
|
+
}, [config.platform, _methods]);
|
|
2900
2972
|
return /* @__PURE__ */ jsx26(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
2901
2973
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
2902
2974
|
}, {
|
|
@@ -2921,7 +2993,7 @@ function WalletModal(props) {
|
|
|
2921
2993
|
}
|
|
2922
2994
|
|
|
2923
2995
|
// src/components/CEXBindModal/index.tsx
|
|
2924
|
-
import { useEffect as useEffect15, useMemo as
|
|
2996
|
+
import { useEffect as useEffect15, useMemo as useMemo11, useState as useState19 } from "react";
|
|
2925
2997
|
import { FormattedMessage as FormattedMessage10, useIntl as useIntl15 } from "react-intl";
|
|
2926
2998
|
import { jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2927
2999
|
function CEXBindModal({
|
|
@@ -2938,7 +3010,7 @@ function CEXBindModal({
|
|
|
2938
3010
|
const [key, setKey] = useState19("");
|
|
2939
3011
|
const [secret, setSecret] = useState19("");
|
|
2940
3012
|
const [error, setError] = useState19("");
|
|
2941
|
-
const needPassphrase =
|
|
3013
|
+
const needPassphrase = useMemo11(() => {
|
|
2942
3014
|
return ["bitget", "okx"].includes(type.toLowerCase());
|
|
2943
3015
|
}, [type]);
|
|
2944
3016
|
useEffect15(() => {
|
|
@@ -3039,7 +3111,7 @@ import {
|
|
|
3039
3111
|
createPublicClient
|
|
3040
3112
|
} from "viem";
|
|
3041
3113
|
import { useEffect as useEffect16, useState as useState20 } from "react";
|
|
3042
|
-
import { useQuery } from "@tanstack/react-query";
|
|
3114
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
3043
3115
|
|
|
3044
3116
|
// src/components/Drawer/index.tsx
|
|
3045
3117
|
import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
@@ -3119,7 +3191,7 @@ function HashPanel({
|
|
|
3119
3191
|
setStatus("confirm");
|
|
3120
3192
|
}
|
|
3121
3193
|
}, [hash]);
|
|
3122
|
-
|
|
3194
|
+
useQuery2(
|
|
3123
3195
|
{
|
|
3124
3196
|
queryKey: ["txhash", hash, chain],
|
|
3125
3197
|
queryFn: async () => {
|
|
@@ -3134,6 +3206,7 @@ function HashPanel({
|
|
|
3134
3206
|
setStatus("pending");
|
|
3135
3207
|
return false;
|
|
3136
3208
|
}
|
|
3209
|
+
matchlog_default.log("getTransactionReceipt", receipt);
|
|
3137
3210
|
if (receipt.status === "success") {
|
|
3138
3211
|
setStatus("success");
|
|
3139
3212
|
return true;
|
|
@@ -3324,7 +3397,7 @@ import {
|
|
|
3324
3397
|
} from "viem";
|
|
3325
3398
|
import { toAccount } from "viem/accounts";
|
|
3326
3399
|
import { createWalletClient } from "viem";
|
|
3327
|
-
import { useEffect as useEffect18, useMemo as
|
|
3400
|
+
import { useEffect as useEffect18, useMemo as useMemo12 } from "react";
|
|
3328
3401
|
import { encodeDeployData } from "viem";
|
|
3329
3402
|
var AppClientId = "react-sdk-" + getVersion();
|
|
3330
3403
|
function useWallet() {
|
|
@@ -3448,7 +3521,7 @@ function useWallet() {
|
|
|
3448
3521
|
chainType
|
|
3449
3522
|
});
|
|
3450
3523
|
};
|
|
3451
|
-
const evmAccount =
|
|
3524
|
+
const evmAccount = useMemo12(() => {
|
|
3452
3525
|
return address ? toAccount({
|
|
3453
3526
|
address,
|
|
3454
3527
|
async signMessage({ message }) {
|
|
@@ -3472,7 +3545,8 @@ function useWallet() {
|
|
|
3472
3545
|
name: chain?.nativeCurrency?.name || "ETH",
|
|
3473
3546
|
symbol: chain?.nativeCurrency?.symbol || "ETH",
|
|
3474
3547
|
decimals: chain?.nativeCurrency?.decimals || 18
|
|
3475
|
-
}
|
|
3548
|
+
},
|
|
3549
|
+
rpcUrls: chain?.rpcUrls
|
|
3476
3550
|
}
|
|
3477
3551
|
});
|
|
3478
3552
|
},
|
|
@@ -3509,15 +3583,16 @@ function useWallet() {
|
|
|
3509
3583
|
const chainId = chain ? chain.id : await obj.getChainId();
|
|
3510
3584
|
const _chain = chain || obj.chain;
|
|
3511
3585
|
const transactionId = Date.now().toString() + Math.random().toString().slice(6);
|
|
3512
|
-
|
|
3513
|
-
|
|
3586
|
+
window.matchProvider.transactionMessageIntervalMap[transactionId] = {
|
|
3587
|
+
transaction,
|
|
3588
|
+
func: async () => {
|
|
3514
3589
|
try {
|
|
3515
3590
|
const {
|
|
3516
3591
|
chain: chain2,
|
|
3517
3592
|
account,
|
|
3518
3593
|
...prepareTransactionRequest
|
|
3519
3594
|
// @ts-ignore
|
|
3520
|
-
} = await obj.prepareTransactionRequest(transaction);
|
|
3595
|
+
} = await obj.prepareTransactionRequest(window.matchProvider.transactionMessageIntervalMap[transactionId].transaction);
|
|
3521
3596
|
window.matchProvider.sendWalletMessage({
|
|
3522
3597
|
method: "prepareTransactionRequest",
|
|
3523
3598
|
data: {
|
|
@@ -3528,9 +3603,11 @@ function useWallet() {
|
|
|
3528
3603
|
} catch (error) {
|
|
3529
3604
|
console.error(error);
|
|
3530
3605
|
}
|
|
3531
|
-
}
|
|
3532
|
-
|
|
3533
|
-
|
|
3606
|
+
},
|
|
3607
|
+
interval: setInterval(() => {
|
|
3608
|
+
window.matchProvider.transactionMessageIntervalMap[transactionId].func();
|
|
3609
|
+
}, 1e4)
|
|
3610
|
+
};
|
|
3534
3611
|
try {
|
|
3535
3612
|
const {
|
|
3536
3613
|
chain: chain2,
|
|
@@ -3549,7 +3626,8 @@ function useWallet() {
|
|
|
3549
3626
|
chain: {
|
|
3550
3627
|
id: chainId,
|
|
3551
3628
|
name: _chain?.name,
|
|
3552
|
-
nativeCurrency: _chain?.nativeCurrency
|
|
3629
|
+
nativeCurrency: _chain?.nativeCurrency,
|
|
3630
|
+
rpcUrls: _chain?.rpcUrls
|
|
3553
3631
|
},
|
|
3554
3632
|
prepareTransactionRequest
|
|
3555
3633
|
}
|
|
@@ -3562,11 +3640,13 @@ function useWallet() {
|
|
|
3562
3640
|
hash: txHash,
|
|
3563
3641
|
chain: _chain
|
|
3564
3642
|
});
|
|
3565
|
-
clearInterval(interval);
|
|
3643
|
+
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
3644
|
+
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
3566
3645
|
resolve(txHash);
|
|
3567
3646
|
} catch (error) {
|
|
3568
3647
|
console.error("qwe-sign-error", error);
|
|
3569
|
-
clearInterval(interval);
|
|
3648
|
+
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
3649
|
+
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
3570
3650
|
reject(error);
|
|
3571
3651
|
}
|
|
3572
3652
|
};
|
|
@@ -3671,6 +3751,7 @@ function useWalletInit({
|
|
|
3671
3751
|
iframe.style.width = "0";
|
|
3672
3752
|
iframe.style.height = "0";
|
|
3673
3753
|
iframe.style.position = "fixed";
|
|
3754
|
+
iframe.style.zIndex = "200";
|
|
3674
3755
|
iframe.onerror = (e) => {
|
|
3675
3756
|
console.error("sdk.mpc.error", e);
|
|
3676
3757
|
};
|
|
@@ -3679,6 +3760,7 @@ function useWalletInit({
|
|
|
3679
3760
|
createIframe();
|
|
3680
3761
|
if (!window.matchProvider) {
|
|
3681
3762
|
window.matchProvider = {
|
|
3763
|
+
transactionMessageIntervalMap: {},
|
|
3682
3764
|
walletMessageMap: {},
|
|
3683
3765
|
walletMessageStack: [],
|
|
3684
3766
|
sendWalletMessage: ({
|
|
@@ -3781,6 +3863,15 @@ function useWalletInit({
|
|
|
3781
3863
|
}
|
|
3782
3864
|
return;
|
|
3783
3865
|
}
|
|
3866
|
+
if (messageId == "updateTransactionData") {
|
|
3867
|
+
const { data, rootData, transactionId } = res.data;
|
|
3868
|
+
if (window.matchProvider.transactionMessageIntervalMap[transactionId] && window.matchProvider.transactionMessageIntervalMap[transactionId].transaction.data == rootData) {
|
|
3869
|
+
window.matchProvider.transactionMessageIntervalMap[transactionId].transaction.data = data;
|
|
3870
|
+
const { func } = window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
3871
|
+
func();
|
|
3872
|
+
}
|
|
3873
|
+
return;
|
|
3874
|
+
}
|
|
3784
3875
|
if (messageId && window.matchProvider.walletMessageMap[messageId]) {
|
|
3785
3876
|
const { resolve, reject, timeout } = window.matchProvider.walletMessageMap[messageId];
|
|
3786
3877
|
clearTimeout(timeout);
|
|
@@ -4482,7 +4573,7 @@ function useUserInfo() {
|
|
|
4482
4573
|
const { open: BTCOpen } = useBTCModalStore();
|
|
4483
4574
|
const { open: CEXBindOpen } = useCEXBindModalStore();
|
|
4484
4575
|
const walletModalStore = useWalletModalStore();
|
|
4485
|
-
const isLogin =
|
|
4576
|
+
const isLogin = useMemo13(() => !!token && !!overview, [token, overview]);
|
|
4486
4577
|
const logout = async () => {
|
|
4487
4578
|
try {
|
|
4488
4579
|
await toLogoutApi();
|
|
@@ -4800,4 +4891,4 @@ export {
|
|
|
4800
4891
|
MatchProvider,
|
|
4801
4892
|
useMatch
|
|
4802
4893
|
};
|
|
4803
|
-
//# sourceMappingURL=chunk-
|
|
4894
|
+
//# sourceMappingURL=chunk-XN7LSOI7.mjs.map
|