@matchain/matchid-sdk-react 0.1.42-alpha.2 → 0.1.42-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/icon/index.d.mts +1 -1
- package/dist/assets/icon/index.d.ts +1 -1
- package/dist/{chunk-2YN5Y3SM.mjs → chunk-AIYRR4YQ.mjs} +2 -2
- package/dist/chunk-KCESOJHY.mjs +4645 -0
- package/dist/chunk-KCESOJHY.mjs.map +1 -0
- package/dist/chunk-SQIJR7RA.mjs +29 -0
- package/dist/chunk-SQIJR7RA.mjs.map +1 -0
- package/dist/components/index.d.mts +3 -2
- package/dist/components/index.d.ts +3 -2
- package/dist/components/index.js +647 -452
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +4 -1
- package/dist/hooks/api/index.d.mts +2 -2
- package/dist/hooks/api/index.d.ts +2 -2
- package/dist/hooks/api/index.js +113 -76
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +3 -2
- package/dist/hooks/index.d.mts +5 -2
- package/dist/hooks/index.d.ts +5 -2
- package/dist/hooks/index.js +321 -151
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +2 -1
- package/dist/{index-CxY3u9Rv.d.ts → index--yBVwkf9.d.ts} +13 -4
- package/dist/index-BxS06a5O.d.ts +50 -0
- package/dist/{index-DCReY5T2.d.mts → index-CGpyQlbI.d.mts} +13 -4
- package/dist/{index-GcpJCj6O.d.ts → index-Ca9nh_8s.d.ts} +1 -1
- package/dist/{index-DbjibQ5d.d.mts → index-DFZpfAfc.d.mts} +1 -1
- package/dist/index-DKMrpRJC.d.ts +137 -0
- package/dist/index-q5XDobUF.d.mts +50 -0
- package/dist/index-sOVSnYF4.d.mts +137 -0
- package/dist/index.css +84 -4
- package/dist/index.d.mts +8 -4
- package/dist/index.d.ts +8 -4
- package/dist/index.js +1033 -618
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -2
- package/dist/mpc-CTbBWHld.d.mts +20 -0
- package/dist/mpc-CTbBWHld.d.ts +20 -0
- package/dist/types/index.d.mts +3 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.js +44 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +10 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/types-CVwZEgQ0.d.mts +244 -0
- package/dist/types-CVwZEgQ0.d.ts +244 -0
- package/example/package.json +1 -0
- package/example/src/App.tsx +54 -28
- package/example/src/components/ButtonGroup/index.tsx +10 -0
- package/example/src/components/Login/index.tsx +2 -2
- package/example/src/components/RoutePrivate/index.tsx +4 -3
- package/example/src/config/chains/index.ts +2 -0
- package/example/src/config/chains/matchMain.ts +27 -0
- package/example/src/config/chains/matchTest.ts +33 -0
- package/example/src/config/index.ts +6 -2
- package/example/src/pages/User/components/BindListModal.tsx +10 -0
- package/example/src/pages/User/components/PohListModal.tsx +10 -0
- package/example/src/pages/User/components/QueryDisplay.tsx +25 -0
- package/example/src/pages/{User.tsx → User/index.tsx} +55 -84
- package/example/src/pages/Wallet.tsx +133 -44
- package/example/src/store/useLocalStore.ts +45 -0
- package/package.json +7 -2
- package/dist/chunk-PZPEWHBV.mjs +0 -4251
- package/dist/chunk-PZPEWHBV.mjs.map +0 -1
- package/dist/index-B4YpKSY3.d.ts +0 -94
- package/dist/index-_k6h9w0P.d.mts +0 -94
- package/dist/types.d-DwF-Pkvh.d.mts +0 -179
- package/dist/types.d-DwF-Pkvh.d.ts +0 -179
- /package/dist/{chunk-2YN5Y3SM.mjs.map → chunk-AIYRR4YQ.mjs.map} +0 -0
package/dist/components/index.js
CHANGED
|
@@ -41,6 +41,7 @@ __export(components_exports, {
|
|
|
41
41
|
LoginPanel: () => LoginPanel,
|
|
42
42
|
Modal: () => Modal,
|
|
43
43
|
ModalWithHeader: () => ModalWithHeader,
|
|
44
|
+
Overlay: () => Overlay,
|
|
44
45
|
PasswordModal: () => PasswordModal,
|
|
45
46
|
Popover: () => Popover,
|
|
46
47
|
SOLModal: () => SOLModal,
|
|
@@ -51,7 +52,7 @@ __export(components_exports, {
|
|
|
51
52
|
module.exports = __toCommonJS(components_exports);
|
|
52
53
|
|
|
53
54
|
// src/components/EmailModal/index.tsx
|
|
54
|
-
var
|
|
55
|
+
var import_react18 = require("react");
|
|
55
56
|
|
|
56
57
|
// src/assets/icon/ArrowLeftIcon.tsx
|
|
57
58
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1123,15 +1124,24 @@ function useDownMd() {
|
|
|
1123
1124
|
return isBelowMd;
|
|
1124
1125
|
}
|
|
1125
1126
|
|
|
1126
|
-
// src/components/
|
|
1127
|
+
// src/components/Overlay/index.tsx
|
|
1128
|
+
var import_react2 = require("react");
|
|
1127
1129
|
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
1128
|
-
function
|
|
1130
|
+
function Overlay({
|
|
1131
|
+
isOpen = false,
|
|
1129
1132
|
children,
|
|
1130
|
-
|
|
1131
|
-
width = 480,
|
|
1132
|
-
zIndex = 100,
|
|
1133
|
-
className = ""
|
|
1133
|
+
zIndex = 100
|
|
1134
1134
|
}) {
|
|
1135
|
+
(0, import_react2.useEffect)(() => {
|
|
1136
|
+
if (isOpen) {
|
|
1137
|
+
document.body.style.overflow = "hidden";
|
|
1138
|
+
} else {
|
|
1139
|
+
document.body.style.overflow = "";
|
|
1140
|
+
}
|
|
1141
|
+
return () => {
|
|
1142
|
+
document.body.style.overflow = "";
|
|
1143
|
+
};
|
|
1144
|
+
}, [isOpen]);
|
|
1135
1145
|
return isOpen ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
1136
1146
|
"div",
|
|
1137
1147
|
{
|
|
@@ -1139,15 +1149,27 @@ function Modal({
|
|
|
1139
1149
|
style: {
|
|
1140
1150
|
zIndex
|
|
1141
1151
|
},
|
|
1142
|
-
children
|
|
1143
|
-
width
|
|
1144
|
-
}, children: [
|
|
1145
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "matchid-modal-mobile-header" }),
|
|
1146
|
-
children
|
|
1147
|
-
] })
|
|
1152
|
+
children
|
|
1148
1153
|
}
|
|
1149
1154
|
) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, {});
|
|
1150
1155
|
}
|
|
1156
|
+
|
|
1157
|
+
// src/components/Modal/index.tsx
|
|
1158
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
1159
|
+
function Modal({
|
|
1160
|
+
children,
|
|
1161
|
+
isOpen,
|
|
1162
|
+
width = 480,
|
|
1163
|
+
zIndex = 100,
|
|
1164
|
+
className = ""
|
|
1165
|
+
}) {
|
|
1166
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Overlay, { isOpen, zIndex, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: `matchid-modal ${className}`, style: {
|
|
1167
|
+
width
|
|
1168
|
+
}, children: [
|
|
1169
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "matchid-modal-mobile-header" }),
|
|
1170
|
+
children
|
|
1171
|
+
] }) });
|
|
1172
|
+
}
|
|
1151
1173
|
function ModalWithHeader({
|
|
1152
1174
|
children,
|
|
1153
1175
|
onBack,
|
|
@@ -1158,24 +1180,24 @@ function ModalWithHeader({
|
|
|
1158
1180
|
...props
|
|
1159
1181
|
}) {
|
|
1160
1182
|
const isDownMd = useDownMd();
|
|
1161
|
-
return /* @__PURE__ */ (0,
|
|
1162
|
-
/* @__PURE__ */ (0,
|
|
1163
|
-
/* @__PURE__ */ (0,
|
|
1164
|
-
onBack && /* @__PURE__ */ (0,
|
|
1165
|
-
/* @__PURE__ */ (0,
|
|
1183
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Modal, { ...props, children: [
|
|
1184
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: `matchid-modal-header ${showBorder ? "matchid-modal-header-border" : ""}`, children: [
|
|
1185
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "matchid-modal-header-content", children: [
|
|
1186
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(ArrowLeftIcon, { height: isDownMd ? 20 : 25, width: isDownMd ? 20 : 24, className: "matchid-modal-header-back", onClick: onBack }),
|
|
1187
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "matchid-modal-header-title", children: title })
|
|
1166
1188
|
] }),
|
|
1167
|
-
onClose && /* @__PURE__ */ (0,
|
|
1189
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(CloseRoundIcon, { size: isDownMd ? 24 : 30, className: "matchid-modal-header-close", onClick: onClose })
|
|
1168
1190
|
] }),
|
|
1169
1191
|
children
|
|
1170
1192
|
] });
|
|
1171
1193
|
}
|
|
1172
1194
|
|
|
1173
1195
|
// src/components/EmailModal/StepEmail.tsx
|
|
1174
|
-
var
|
|
1196
|
+
var import_react4 = require("react");
|
|
1175
1197
|
|
|
1176
1198
|
// src/utils/index.ts
|
|
1177
1199
|
var getVersion = () => {
|
|
1178
|
-
return "0.0.
|
|
1200
|
+
return "0.0.2";
|
|
1179
1201
|
};
|
|
1180
1202
|
function encodeBase64(input) {
|
|
1181
1203
|
return btoa(unescape(encodeURIComponent(input)));
|
|
@@ -1199,7 +1221,7 @@ function getAppClientId() {
|
|
|
1199
1221
|
}
|
|
1200
1222
|
|
|
1201
1223
|
// src/components/Button/index.tsx
|
|
1202
|
-
var
|
|
1224
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
1203
1225
|
function Button({
|
|
1204
1226
|
size = "df",
|
|
1205
1227
|
disabled = false,
|
|
@@ -1218,7 +1240,7 @@ function Button({
|
|
|
1218
1240
|
onClick && onClick();
|
|
1219
1241
|
}
|
|
1220
1242
|
};
|
|
1221
|
-
return /* @__PURE__ */ (0,
|
|
1243
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
1222
1244
|
"button",
|
|
1223
1245
|
{
|
|
1224
1246
|
type,
|
|
@@ -1228,14 +1250,14 @@ function Button({
|
|
|
1228
1250
|
...style
|
|
1229
1251
|
},
|
|
1230
1252
|
onClick: onAction,
|
|
1231
|
-
children: loading ? /* @__PURE__ */ (0,
|
|
1253
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(LoadingIcon_default, { className: "matchid-btn-loading-icon", color: "var(--matchid-btn-loading-color)" }) : children
|
|
1232
1254
|
}
|
|
1233
1255
|
);
|
|
1234
1256
|
}
|
|
1235
1257
|
|
|
1236
1258
|
// src/components/Input/index.tsx
|
|
1237
|
-
var
|
|
1238
|
-
var
|
|
1259
|
+
var import_react3 = require("react");
|
|
1260
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
1239
1261
|
function Input({
|
|
1240
1262
|
onChange,
|
|
1241
1263
|
type,
|
|
@@ -1243,19 +1265,19 @@ function Input({
|
|
|
1243
1265
|
className = "",
|
|
1244
1266
|
...props
|
|
1245
1267
|
}) {
|
|
1246
|
-
const [inputType, setInputType] = (0,
|
|
1268
|
+
const [inputType, setInputType] = (0, import_react3.useState)(type);
|
|
1247
1269
|
const isDownMd = useDownMd();
|
|
1248
|
-
return /* @__PURE__ */ (0,
|
|
1270
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
1249
1271
|
"div",
|
|
1250
1272
|
{
|
|
1251
1273
|
className: `matchid-input-box ${props.value && props.value.length > 0 ? "matchid-input-has-content" : ""} ${className}`,
|
|
1252
1274
|
children: [
|
|
1253
|
-
/* @__PURE__ */ (0,
|
|
1254
|
-
props.value && props.value.length > 0 && /* @__PURE__ */ (0,
|
|
1275
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("input", { type: inputType, onChange, ...props, className: "matchid-input-field" }),
|
|
1276
|
+
props.value && props.value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-input-delete-icon", onClick: (e) => {
|
|
1255
1277
|
if (onChange) {
|
|
1256
1278
|
onChange({ target: { value: "" } });
|
|
1257
1279
|
}
|
|
1258
|
-
}, children: /* @__PURE__ */ (0,
|
|
1280
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
1259
1281
|
DeleteRoundIcon,
|
|
1260
1282
|
{
|
|
1261
1283
|
height: isDownMd ? 16 : 21,
|
|
@@ -1263,9 +1285,9 @@ function Input({
|
|
|
1263
1285
|
color: "var(--matchid-input-delete-icon-color)"
|
|
1264
1286
|
}
|
|
1265
1287
|
) }),
|
|
1266
|
-
type === "password" && /* @__PURE__ */ (0,
|
|
1288
|
+
type === "password" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-input-eye-icon", onClick: () => {
|
|
1267
1289
|
setInputType(inputType === "password" ? "text" : "password");
|
|
1268
|
-
}, children: inputType === "password" ? /* @__PURE__ */ (0,
|
|
1290
|
+
}, children: inputType === "password" ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CloseEyeIcon, { size: isDownMd ? 16 : 20 }) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(OpenEyeIcon, { size: isDownMd ? 16 : 20 }) }),
|
|
1269
1291
|
after
|
|
1270
1292
|
]
|
|
1271
1293
|
}
|
|
@@ -1273,7 +1295,7 @@ function Input({
|
|
|
1273
1295
|
}
|
|
1274
1296
|
|
|
1275
1297
|
// src/components/Field/index.tsx
|
|
1276
|
-
var
|
|
1298
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
1277
1299
|
function Field({
|
|
1278
1300
|
label,
|
|
1279
1301
|
children,
|
|
@@ -1281,37 +1303,37 @@ function Field({
|
|
|
1281
1303
|
required,
|
|
1282
1304
|
className = ""
|
|
1283
1305
|
}) {
|
|
1284
|
-
return /* @__PURE__ */ (0,
|
|
1285
|
-
/* @__PURE__ */ (0,
|
|
1286
|
-
required && /* @__PURE__ */ (0,
|
|
1306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: `matchid-field-box ${className}`, children: [
|
|
1307
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: "matchid-field-label", children: [
|
|
1308
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: "matchid-field-required", children: "*" }),
|
|
1287
1309
|
label
|
|
1288
1310
|
] }),
|
|
1289
1311
|
children,
|
|
1290
|
-
error && /* @__PURE__ */ (0,
|
|
1312
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "matchid-field-error", children: error })
|
|
1291
1313
|
] });
|
|
1292
1314
|
}
|
|
1293
1315
|
|
|
1294
1316
|
// src/components/EmailModal/StepEmail.tsx
|
|
1295
1317
|
var import_react_intl = require("react-intl");
|
|
1296
|
-
var
|
|
1318
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
1297
1319
|
function StepEmail(props) {
|
|
1298
1320
|
const intl = (0, import_react_intl.useIntl)();
|
|
1299
|
-
const [emailVal, setEmailVal] = (0,
|
|
1300
|
-
(0,
|
|
1321
|
+
const [emailVal, setEmailVal] = (0, import_react4.useState)("");
|
|
1322
|
+
(0, import_react4.useEffect)(() => {
|
|
1301
1323
|
if (props.email) {
|
|
1302
1324
|
setEmailVal(props.email);
|
|
1303
1325
|
}
|
|
1304
1326
|
}, []);
|
|
1305
|
-
const canContinue = (0,
|
|
1327
|
+
const canContinue = (0, import_react4.useMemo)(() => {
|
|
1306
1328
|
return isValidEmail(emailVal);
|
|
1307
1329
|
}, [emailVal]);
|
|
1308
1330
|
const onContinue = async () => {
|
|
1309
1331
|
props.onContinue(emailVal);
|
|
1310
1332
|
};
|
|
1311
|
-
return /* @__PURE__ */ (0,
|
|
1312
|
-
/* @__PURE__ */ (0,
|
|
1333
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "matchid-email-email-box", children: [
|
|
1334
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Field, { label: intl.formatMessage({
|
|
1313
1335
|
id: "emailAddress"
|
|
1314
|
-
}), children: /* @__PURE__ */ (0,
|
|
1336
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
1315
1337
|
Input,
|
|
1316
1338
|
{
|
|
1317
1339
|
placeholder: intl.formatMessage({
|
|
@@ -1321,9 +1343,9 @@ function StepEmail(props) {
|
|
|
1321
1343
|
value: emailVal
|
|
1322
1344
|
}
|
|
1323
1345
|
) }),
|
|
1324
|
-
/* @__PURE__ */ (0,
|
|
1346
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { disabled: !canContinue, style: {
|
|
1325
1347
|
marginTop: "64px"
|
|
1326
|
-
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
1348
|
+
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_intl.FormattedMessage, { id: "continue" }) })
|
|
1327
1349
|
] });
|
|
1328
1350
|
}
|
|
1329
1351
|
|
|
@@ -1371,7 +1393,7 @@ var localStore = useLocalStore;
|
|
|
1371
1393
|
var useLocalStore_default = useLocalStore;
|
|
1372
1394
|
|
|
1373
1395
|
// src/hooks/useUserInfo.tsx
|
|
1374
|
-
var
|
|
1396
|
+
var import_react16 = require("react");
|
|
1375
1397
|
|
|
1376
1398
|
// src/api/request.ts
|
|
1377
1399
|
var import_axios = __toESM(require("axios"));
|
|
@@ -1580,16 +1602,16 @@ var toBindWalletApi = ({
|
|
|
1580
1602
|
};
|
|
1581
1603
|
|
|
1582
1604
|
// src/MatchContext.tsx
|
|
1583
|
-
var
|
|
1605
|
+
var import_react15 = require("react");
|
|
1584
1606
|
|
|
1585
1607
|
// src/context/BusinessProvider.tsx
|
|
1586
|
-
var
|
|
1608
|
+
var import_react12 = require("react");
|
|
1587
1609
|
|
|
1588
1610
|
// src/components/PasswordModal/index.tsx
|
|
1589
|
-
var
|
|
1611
|
+
var import_react8 = require("react");
|
|
1590
1612
|
|
|
1591
1613
|
// src/hooks/useMatchEvents.ts
|
|
1592
|
-
var
|
|
1614
|
+
var import_react5 = require("react");
|
|
1593
1615
|
|
|
1594
1616
|
// src/hooks/eventManager.ts
|
|
1595
1617
|
var EventManager = class {
|
|
@@ -1619,11 +1641,14 @@ var EventManager = class {
|
|
|
1619
1641
|
var eventManager = new EventManager();
|
|
1620
1642
|
var eventManager_default = eventManager;
|
|
1621
1643
|
|
|
1644
|
+
// src/hooks/useWallet.tsx
|
|
1645
|
+
var import_viem = require("viem");
|
|
1646
|
+
|
|
1622
1647
|
// src/store/useStore.ts
|
|
1623
1648
|
var import_zustand2 = require("zustand");
|
|
1624
1649
|
var useStore = (0, import_zustand2.create)((set) => ({
|
|
1625
|
-
|
|
1626
|
-
|
|
1650
|
+
walletReady: false,
|
|
1651
|
+
setWalletReady: (inited) => set({ walletReady: inited }),
|
|
1627
1652
|
recoveryModal: {
|
|
1628
1653
|
open: false,
|
|
1629
1654
|
success: async () => {
|
|
@@ -1638,149 +1663,335 @@ var useStore_default = useStore;
|
|
|
1638
1663
|
|
|
1639
1664
|
// src/hooks/useWallet.tsx
|
|
1640
1665
|
var import_accounts = require("viem/accounts");
|
|
1666
|
+
var import_viem2 = require("viem");
|
|
1667
|
+
var import_react6 = require("react");
|
|
1668
|
+
var import_viem3 = require("viem");
|
|
1669
|
+
|
|
1670
|
+
// src/store/useModalStore.ts
|
|
1671
|
+
var import_zustand3 = require("zustand");
|
|
1672
|
+
var useSOLModalStore = (0, import_zustand3.create)((set) => ({
|
|
1673
|
+
isOpen: false,
|
|
1674
|
+
type: "",
|
|
1675
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1676
|
+
close: () => set({ isOpen: false })
|
|
1677
|
+
}));
|
|
1678
|
+
var useTRONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1679
|
+
isOpen: false,
|
|
1680
|
+
type: "",
|
|
1681
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1682
|
+
close: () => set({ isOpen: false })
|
|
1683
|
+
}));
|
|
1684
|
+
var useTONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1685
|
+
isOpen: false,
|
|
1686
|
+
type: "",
|
|
1687
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1688
|
+
close: () => set({ isOpen: false })
|
|
1689
|
+
}));
|
|
1690
|
+
var useBTCModalStore = (0, import_zustand3.create)((set) => ({
|
|
1691
|
+
isOpen: false,
|
|
1692
|
+
type: "",
|
|
1693
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1694
|
+
close: () => set({ isOpen: false })
|
|
1695
|
+
}));
|
|
1696
|
+
var useCEXBindModalStore = (0, import_zustand3.create)((set) => ({
|
|
1697
|
+
type: "",
|
|
1698
|
+
isOpen: false,
|
|
1699
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1700
|
+
close: () => set({ isOpen: false })
|
|
1701
|
+
}));
|
|
1702
|
+
var useHashPanelStore = (0, import_zustand3.create)((set) => ({
|
|
1703
|
+
isOpen: false,
|
|
1704
|
+
hash: null,
|
|
1705
|
+
chain: null,
|
|
1706
|
+
open: (params) => set({
|
|
1707
|
+
isOpen: true,
|
|
1708
|
+
hash: params?.hash || null,
|
|
1709
|
+
chain: params?.chain || null
|
|
1710
|
+
}),
|
|
1711
|
+
close: () => set({ isOpen: false })
|
|
1712
|
+
}));
|
|
1713
|
+
|
|
1714
|
+
// src/hooks/useWallet.tsx
|
|
1641
1715
|
var AppClientId = "react-sdk-" + getVersion();
|
|
1642
1716
|
function useWallet() {
|
|
1643
1717
|
const { appid, token, overview, address, wallet: walletConfig } = useLocalStore_default();
|
|
1644
|
-
const { setRecoveryModal, closeRecoveryModal } = useStore_default();
|
|
1645
|
-
const
|
|
1718
|
+
const { setRecoveryModal, closeRecoveryModal, walletReady } = useStore_default();
|
|
1719
|
+
const { open: openHashPanel } = useHashPanelStore();
|
|
1720
|
+
const initCore = ({
|
|
1646
1721
|
did,
|
|
1647
1722
|
address: address2
|
|
1648
1723
|
}) => {
|
|
1649
|
-
return window.
|
|
1650
|
-
"initCore",
|
|
1724
|
+
return window.matchProvider.waitUntilWalletMessage(
|
|
1651
1725
|
{
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1726
|
+
method: "initCore",
|
|
1727
|
+
data: {
|
|
1728
|
+
AppId: appid,
|
|
1729
|
+
AppClientId,
|
|
1730
|
+
UserId: did,
|
|
1731
|
+
AccessToken: token,
|
|
1732
|
+
Address: address2
|
|
1733
|
+
}
|
|
1657
1734
|
}
|
|
1658
1735
|
);
|
|
1659
1736
|
};
|
|
1737
|
+
const generateEmbeddedWallets = async (data) => {
|
|
1738
|
+
return await window.matchProvider.waitUntilWalletMessage({
|
|
1739
|
+
method: "generateEmbeddedWallets",
|
|
1740
|
+
data
|
|
1741
|
+
});
|
|
1742
|
+
};
|
|
1743
|
+
const recoveryEmbeddedWallets = async (data) => {
|
|
1744
|
+
return await window.matchProvider.waitUntilWalletMessage({
|
|
1745
|
+
method: "recoveryEmbeddedWallets",
|
|
1746
|
+
data
|
|
1747
|
+
});
|
|
1748
|
+
};
|
|
1660
1749
|
const isRecovered = async () => {
|
|
1661
|
-
const res = await window.
|
|
1750
|
+
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
1751
|
+
method: "isRecovered"
|
|
1752
|
+
});
|
|
1662
1753
|
return res.isRecovered;
|
|
1663
1754
|
};
|
|
1664
|
-
const
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
recoveryType = "user_passcode_recovery_key"
|
|
1755
|
+
const recoverAfter = async ({
|
|
1756
|
+
chainType,
|
|
1757
|
+
handle
|
|
1668
1758
|
}) => {
|
|
1669
|
-
return await window.waitMatchUntilWalletMessage("generateWallet", {
|
|
1670
|
-
chainType: "ethereum",
|
|
1671
|
-
recoveryType,
|
|
1672
|
-
userPasscode
|
|
1673
|
-
});
|
|
1674
|
-
};
|
|
1675
|
-
const recoverAfter = async (func) => {
|
|
1676
1759
|
return new Promise(async (resolve, reject) => {
|
|
1677
1760
|
const res = await isRecovered();
|
|
1678
|
-
matchlog_default.log("isRecovered", res);
|
|
1679
|
-
if (
|
|
1680
|
-
await
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
});
|
|
1684
|
-
if (walletConfig.type == "UserPasscode") {
|
|
1685
|
-
setRecoveryModal({
|
|
1686
|
-
open: true,
|
|
1687
|
-
success: async () => {
|
|
1688
|
-
matchlog_default.log("recover Success");
|
|
1689
|
-
await func(resolve, reject);
|
|
1690
|
-
},
|
|
1691
|
-
close: async () => {
|
|
1692
|
-
closeRecoveryModal();
|
|
1693
|
-
reject(new Error("recover modal close"));
|
|
1694
|
-
}
|
|
1695
|
-
});
|
|
1696
|
-
return;
|
|
1697
|
-
}
|
|
1698
|
-
await recoveryWallet("ethereum", "base_generated_recovery_key");
|
|
1699
|
-
await func(resolve, reject);
|
|
1700
|
-
} else {
|
|
1701
|
-
await recoveryWallet("ethereum", "user_passcode_recovery_key");
|
|
1702
|
-
await func(resolve, reject);
|
|
1761
|
+
matchlog_default.log("sdk.mpc.isRecovered", res);
|
|
1762
|
+
if (res) {
|
|
1763
|
+
await recoveryEmbeddedWallets({ chainType, recoveryType: "user_passcode_recovery_key" });
|
|
1764
|
+
await handle(resolve, reject);
|
|
1765
|
+
return;
|
|
1703
1766
|
}
|
|
1767
|
+
setRecoveryModal({
|
|
1768
|
+
chainType,
|
|
1769
|
+
open: true,
|
|
1770
|
+
success: async () => {
|
|
1771
|
+
closeRecoveryModal();
|
|
1772
|
+
matchlog_default.log("sdk.mpc.recover", "Success");
|
|
1773
|
+
await handle(resolve, reject);
|
|
1774
|
+
},
|
|
1775
|
+
close: async () => {
|
|
1776
|
+
closeRecoveryModal();
|
|
1777
|
+
reject(new Error("recover modal close"));
|
|
1778
|
+
}
|
|
1779
|
+
});
|
|
1780
|
+
await initCore({
|
|
1781
|
+
address: overview?.address || "",
|
|
1782
|
+
did: overview?.did || ""
|
|
1783
|
+
});
|
|
1704
1784
|
});
|
|
1705
1785
|
};
|
|
1706
|
-
const signMessage2 = async (
|
|
1786
|
+
const signMessage2 = async ({
|
|
1787
|
+
message,
|
|
1788
|
+
chainType = "ethereum" /* Ethereum */
|
|
1789
|
+
}) => {
|
|
1707
1790
|
const getSign = async (resolve, reject) => {
|
|
1708
1791
|
try {
|
|
1709
|
-
const recoverRes = await window.
|
|
1710
|
-
|
|
1711
|
-
|
|
1792
|
+
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
1793
|
+
method: "signMessage",
|
|
1794
|
+
data: {
|
|
1795
|
+
message,
|
|
1796
|
+
chainType
|
|
1797
|
+
}
|
|
1712
1798
|
});
|
|
1713
|
-
|
|
1714
|
-
resolve(recoverRes);
|
|
1799
|
+
resolve(recoverRes.message);
|
|
1715
1800
|
} catch (error) {
|
|
1716
1801
|
console.error("qwe-sign-error", error);
|
|
1717
1802
|
reject(error);
|
|
1718
1803
|
}
|
|
1719
1804
|
};
|
|
1720
|
-
return await recoverAfter(
|
|
1805
|
+
return await recoverAfter({
|
|
1806
|
+
handle: getSign,
|
|
1807
|
+
chainType
|
|
1808
|
+
});
|
|
1721
1809
|
};
|
|
1722
|
-
const signTransaction = async (
|
|
1810
|
+
const signTransaction = async ({
|
|
1811
|
+
transaction,
|
|
1812
|
+
chainType = "ethereum" /* Ethereum */,
|
|
1813
|
+
chain
|
|
1814
|
+
}) => {
|
|
1815
|
+
console.log("qwe-sign-transaction", transaction);
|
|
1723
1816
|
const getSign = async (resolve, reject) => {
|
|
1724
1817
|
try {
|
|
1725
|
-
const recoverRes = await window.
|
|
1726
|
-
|
|
1727
|
-
|
|
1818
|
+
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
1819
|
+
method: "signTransaction",
|
|
1820
|
+
data: {
|
|
1821
|
+
transaction,
|
|
1822
|
+
chainType,
|
|
1823
|
+
chain
|
|
1824
|
+
}
|
|
1728
1825
|
});
|
|
1729
|
-
|
|
1730
|
-
resolve(recoverRes);
|
|
1826
|
+
resolve(recoverRes.message);
|
|
1731
1827
|
} catch (error) {
|
|
1732
1828
|
console.error("qwe-sign-error", error);
|
|
1733
1829
|
reject(error);
|
|
1734
1830
|
}
|
|
1735
1831
|
};
|
|
1736
|
-
return await recoverAfter(
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
return await window.waitMatchUntilWalletMessage("recoveryWallet", {
|
|
1740
|
-
chainType,
|
|
1741
|
-
recoveryType,
|
|
1742
|
-
userPasscode
|
|
1832
|
+
return await recoverAfter({
|
|
1833
|
+
handle: getSign,
|
|
1834
|
+
chainType
|
|
1743
1835
|
});
|
|
1744
1836
|
};
|
|
1745
|
-
const evmAccount =
|
|
1746
|
-
address,
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1837
|
+
const evmAccount = (0, import_react6.useMemo)(() => {
|
|
1838
|
+
return address ? (0, import_accounts.toAccount)({
|
|
1839
|
+
address,
|
|
1840
|
+
async signMessage({ message }) {
|
|
1841
|
+
return await signMessage2({
|
|
1842
|
+
message,
|
|
1843
|
+
chainType: "ethereum" /* Ethereum */
|
|
1844
|
+
});
|
|
1845
|
+
},
|
|
1846
|
+
async signTransaction(transaction, options) {
|
|
1847
|
+
const { account, chain, ...restTransaction } = transaction;
|
|
1848
|
+
console.log("qwe-sign-transaction", restTransaction, options);
|
|
1849
|
+
return await signTransaction({
|
|
1850
|
+
transaction: {
|
|
1851
|
+
...restTransaction
|
|
1852
|
+
},
|
|
1853
|
+
chainType: "ethereum" /* Ethereum */,
|
|
1854
|
+
chain: {
|
|
1855
|
+
id: chain?.id || restTransaction.chainId,
|
|
1856
|
+
name: chain?.name,
|
|
1857
|
+
nativeCurrency: {
|
|
1858
|
+
name: chain?.nativeCurrency?.name || "ETH",
|
|
1859
|
+
symbol: chain?.nativeCurrency?.symbol || "ETH",
|
|
1860
|
+
decimals: chain?.nativeCurrency?.decimals || 18
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
});
|
|
1864
|
+
},
|
|
1865
|
+
async signTypedData(typedData) {
|
|
1866
|
+
return "0x";
|
|
1867
|
+
}
|
|
1868
|
+
}) : void 0;
|
|
1869
|
+
}, [address]);
|
|
1870
|
+
(0, import_react6.useEffect)(() => {
|
|
1871
|
+
console.log("qwe-evmAccount", evmAccount);
|
|
1872
|
+
}, [evmAccount]);
|
|
1761
1873
|
return {
|
|
1874
|
+
walletReady,
|
|
1762
1875
|
evmAccount,
|
|
1763
1876
|
address,
|
|
1764
|
-
|
|
1765
|
-
initWallet,
|
|
1766
|
-
generateWallet,
|
|
1877
|
+
initCore,
|
|
1767
1878
|
signMessage: signMessage2,
|
|
1768
1879
|
signTransaction,
|
|
1769
1880
|
isRecovered,
|
|
1770
|
-
recoverAfter
|
|
1881
|
+
recoverAfter,
|
|
1882
|
+
generateEmbeddedWallets,
|
|
1883
|
+
recoveryEmbeddedWallets,
|
|
1884
|
+
createWalletClient: (parameters) => {
|
|
1885
|
+
if (!evmAccount) {
|
|
1886
|
+
return;
|
|
1887
|
+
}
|
|
1888
|
+
const obj = (0, import_viem2.createWalletClient)({
|
|
1889
|
+
...parameters,
|
|
1890
|
+
account: evmAccount
|
|
1891
|
+
});
|
|
1892
|
+
const sendTransaction = async (transaction) => {
|
|
1893
|
+
const getSign = async (resolve, reject) => {
|
|
1894
|
+
const { chain, ...restTransaction } = transaction;
|
|
1895
|
+
const chainId = chain ? chain.id : await obj.getChainId();
|
|
1896
|
+
const _chain = chain || obj.chain;
|
|
1897
|
+
const transactionId = Date.now().toString() + Math.random().toString().slice(6);
|
|
1898
|
+
const sendPrepareTransactionRequest = async () => {
|
|
1899
|
+
const { chain: chain2, account, ...prepareTransactionRequest } = await obj.prepareTransactionRequest(transaction);
|
|
1900
|
+
window.matchProvider.sendWalletMessage({
|
|
1901
|
+
method: "prepareTransactionRequest",
|
|
1902
|
+
data: {
|
|
1903
|
+
prepareTransactionRequest,
|
|
1904
|
+
transactionId
|
|
1905
|
+
}
|
|
1906
|
+
});
|
|
1907
|
+
};
|
|
1908
|
+
let interval = null;
|
|
1909
|
+
const timer = setTimeout(() => {
|
|
1910
|
+
sendPrepareTransactionRequest();
|
|
1911
|
+
interval = setInterval(() => {
|
|
1912
|
+
sendPrepareTransactionRequest();
|
|
1913
|
+
}, 1e4);
|
|
1914
|
+
}, 1500);
|
|
1915
|
+
try {
|
|
1916
|
+
const { serializedTransaction } = await window.matchProvider.waitUntilWalletMessage({
|
|
1917
|
+
method: "sendTransaction",
|
|
1918
|
+
data: {
|
|
1919
|
+
transactionId,
|
|
1920
|
+
transaction: {
|
|
1921
|
+
...restTransaction
|
|
1922
|
+
},
|
|
1923
|
+
chainType: "ethereum" /* Ethereum */,
|
|
1924
|
+
chain: {
|
|
1925
|
+
id: chainId,
|
|
1926
|
+
name: _chain?.name,
|
|
1927
|
+
nativeCurrency: _chain?.nativeCurrency
|
|
1928
|
+
}
|
|
1929
|
+
}
|
|
1930
|
+
});
|
|
1931
|
+
openHashPanel();
|
|
1932
|
+
const txHash = await obj.sendRawTransaction({
|
|
1933
|
+
serializedTransaction
|
|
1934
|
+
});
|
|
1935
|
+
openHashPanel({
|
|
1936
|
+
hash: txHash,
|
|
1937
|
+
chain
|
|
1938
|
+
});
|
|
1939
|
+
clearTimeout(timer);
|
|
1940
|
+
clearInterval(interval);
|
|
1941
|
+
resolve(txHash);
|
|
1942
|
+
} catch (error) {
|
|
1943
|
+
console.error("qwe-sign-error", error);
|
|
1944
|
+
clearTimeout(timer);
|
|
1945
|
+
clearInterval(interval);
|
|
1946
|
+
reject(error);
|
|
1947
|
+
}
|
|
1948
|
+
};
|
|
1949
|
+
return await recoverAfter({
|
|
1950
|
+
handle: getSign,
|
|
1951
|
+
chainType: "ethereum" /* Ethereum */
|
|
1952
|
+
});
|
|
1953
|
+
};
|
|
1954
|
+
const deployContract = async (parameters2) => {
|
|
1955
|
+
const { abi, args, bytecode, ...request3 } = parameters2;
|
|
1956
|
+
const calldata = (0, import_viem3.encodeDeployData)({ abi, args, bytecode });
|
|
1957
|
+
return await sendTransaction({
|
|
1958
|
+
...request3,
|
|
1959
|
+
data: calldata
|
|
1960
|
+
});
|
|
1961
|
+
};
|
|
1962
|
+
const writeContract = async (parameters2) => {
|
|
1963
|
+
const { abi, address: address2, args, dataSuffix, functionName, ...request3 } = parameters2;
|
|
1964
|
+
const data = (0, import_viem.encodeFunctionData)({
|
|
1965
|
+
abi,
|
|
1966
|
+
args,
|
|
1967
|
+
functionName
|
|
1968
|
+
});
|
|
1969
|
+
return await sendTransaction({
|
|
1970
|
+
data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
|
|
1971
|
+
to: address2,
|
|
1972
|
+
...request3
|
|
1973
|
+
});
|
|
1974
|
+
};
|
|
1975
|
+
return {
|
|
1976
|
+
...obj,
|
|
1977
|
+
sendTransaction,
|
|
1978
|
+
deployContract,
|
|
1979
|
+
writeContract
|
|
1980
|
+
};
|
|
1981
|
+
}
|
|
1771
1982
|
};
|
|
1772
1983
|
}
|
|
1773
1984
|
|
|
1774
1985
|
// src/hooks/useCopyClipboard.ts
|
|
1775
1986
|
var import_copy_to_clipboard = __toESM(require("copy-to-clipboard"));
|
|
1776
|
-
var
|
|
1987
|
+
var import_react7 = require("react");
|
|
1777
1988
|
function useCopyClipboard(timeout = 500) {
|
|
1778
|
-
const [isCopied, setIsCopied] = (0,
|
|
1779
|
-
const staticCopy = (0,
|
|
1989
|
+
const [isCopied, setIsCopied] = (0, import_react7.useState)(false);
|
|
1990
|
+
const staticCopy = (0, import_react7.useCallback)((text) => {
|
|
1780
1991
|
const didCopy = (0, import_copy_to_clipboard.default)(text);
|
|
1781
1992
|
setIsCopied(didCopy);
|
|
1782
1993
|
}, []);
|
|
1783
|
-
(0,
|
|
1994
|
+
(0, import_react7.useEffect)(() => {
|
|
1784
1995
|
if (isCopied) {
|
|
1785
1996
|
const hide = setTimeout(() => {
|
|
1786
1997
|
setIsCopied(false);
|
|
@@ -1796,21 +2007,23 @@ function useCopyClipboard(timeout = 500) {
|
|
|
1796
2007
|
|
|
1797
2008
|
// src/components/PasswordModal/index.tsx
|
|
1798
2009
|
var import_react_intl2 = require("react-intl");
|
|
1799
|
-
var
|
|
2010
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
1800
2011
|
function PasswordModal({
|
|
1801
2012
|
title,
|
|
1802
2013
|
isOpen,
|
|
1803
2014
|
onSuccess,
|
|
2015
|
+
chainType = "ethereum" /* Ethereum */,
|
|
2016
|
+
recoveryType = "user_passcode_recovery_key" /* UserPasscode */,
|
|
1804
2017
|
...props
|
|
1805
2018
|
}) {
|
|
1806
2019
|
const { refreshOverview, overview } = useUserInfo();
|
|
1807
2020
|
const { isLogin, did } = useUserInfo();
|
|
1808
|
-
const [password, setPassword] = (0,
|
|
1809
|
-
const [rePassword, setRePassword] = (0,
|
|
1810
|
-
const [error, setError] = (0,
|
|
1811
|
-
const {
|
|
2021
|
+
const [password, setPassword] = (0, import_react8.useState)("");
|
|
2022
|
+
const [rePassword, setRePassword] = (0, import_react8.useState)("");
|
|
2023
|
+
const [error, setError] = (0, import_react8.useState)("");
|
|
2024
|
+
const { generateEmbeddedWallets, initCore } = useWallet();
|
|
1812
2025
|
const intl = (0, import_react_intl2.useIntl)();
|
|
1813
|
-
const passwordError = (0,
|
|
2026
|
+
const passwordError = (0, import_react8.useMemo)(() => {
|
|
1814
2027
|
if (password.length < 6) return intl.formatMessage({
|
|
1815
2028
|
id: "passwordMinError"
|
|
1816
2029
|
}, {
|
|
@@ -1818,7 +2031,7 @@ function PasswordModal({
|
|
|
1818
2031
|
});
|
|
1819
2032
|
return "";
|
|
1820
2033
|
}, [password]);
|
|
1821
|
-
const rePasswordError = (0,
|
|
2034
|
+
const rePasswordError = (0, import_react8.useMemo)(() => {
|
|
1822
2035
|
if (rePassword != password) {
|
|
1823
2036
|
return intl.formatMessage({
|
|
1824
2037
|
id: "passwordMatchError"
|
|
@@ -1826,25 +2039,25 @@ function PasswordModal({
|
|
|
1826
2039
|
}
|
|
1827
2040
|
return "";
|
|
1828
2041
|
}, [rePassword, password]);
|
|
1829
|
-
(0,
|
|
2042
|
+
(0, import_react8.useEffect)(() => {
|
|
1830
2043
|
if (isOpen) {
|
|
1831
2044
|
setPassword("");
|
|
1832
2045
|
setRePassword("");
|
|
1833
2046
|
}
|
|
1834
2047
|
}, [isOpen, overview]);
|
|
1835
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
2048
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react8.useState)(false);
|
|
1836
2049
|
const onContinue = async () => {
|
|
1837
2050
|
if (isSubmitting) return;
|
|
1838
2051
|
try {
|
|
1839
2052
|
setIsSubmitting(true);
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
did: did2,
|
|
2053
|
+
await initCore({
|
|
2054
|
+
did: overview?.did || "",
|
|
1843
2055
|
address: ""
|
|
1844
2056
|
});
|
|
1845
|
-
const address = await
|
|
1846
|
-
|
|
1847
|
-
|
|
2057
|
+
const address = await generateEmbeddedWallets({
|
|
2058
|
+
userPasscode: password,
|
|
2059
|
+
chainType,
|
|
2060
|
+
recoveryType
|
|
1848
2061
|
});
|
|
1849
2062
|
await refreshOverview();
|
|
1850
2063
|
onSuccess && onSuccess();
|
|
@@ -1854,15 +2067,15 @@ function PasswordModal({
|
|
|
1854
2067
|
setIsSubmitting(false);
|
|
1855
2068
|
}
|
|
1856
2069
|
};
|
|
1857
|
-
return /* @__PURE__ */ (0,
|
|
2070
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
1858
2071
|
id: "passwordTitle"
|
|
1859
|
-
}), children: /* @__PURE__ */ (0,
|
|
1860
|
-
/* @__PURE__ */ (0,
|
|
1861
|
-
/* @__PURE__ */ (0,
|
|
1862
|
-
/* @__PURE__ */ (0,
|
|
2072
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-password-box", children: [
|
|
2073
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-password-header", children: [
|
|
2074
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "matchid-password-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PasswordRoundIcon, {}) }),
|
|
2075
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "matchid-password-header-content", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_intl2.FormattedMessage, { id: "passwordTips" }) })
|
|
1863
2076
|
] }),
|
|
1864
|
-
/* @__PURE__ */ (0,
|
|
1865
|
-
/* @__PURE__ */ (0,
|
|
2077
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-password-content", children: [
|
|
2078
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Field, { label: intl.formatMessage({ id: "password" }), error: password.length > 0 && passwordError, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1866
2079
|
Input,
|
|
1867
2080
|
{
|
|
1868
2081
|
placeholder: intl.formatMessage({ id: "passwordPlaceholder" }),
|
|
@@ -1872,9 +2085,9 @@ function PasswordModal({
|
|
|
1872
2085
|
value: password
|
|
1873
2086
|
}
|
|
1874
2087
|
) }),
|
|
1875
|
-
/* @__PURE__ */ (0,
|
|
2088
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Field, { label: intl.formatMessage({
|
|
1876
2089
|
id: "rePassword"
|
|
1877
|
-
}), error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0,
|
|
2090
|
+
}), error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1878
2091
|
Input,
|
|
1879
2092
|
{
|
|
1880
2093
|
placeholder: intl.formatMessage({
|
|
@@ -1887,7 +2100,7 @@ function PasswordModal({
|
|
|
1887
2100
|
}
|
|
1888
2101
|
) })
|
|
1889
2102
|
] }),
|
|
1890
|
-
/* @__PURE__ */ (0,
|
|
2103
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1891
2104
|
Button,
|
|
1892
2105
|
{
|
|
1893
2106
|
disabled: password.length == 0 || !!passwordError || !!rePasswordError,
|
|
@@ -1896,79 +2109,60 @@ function PasswordModal({
|
|
|
1896
2109
|
size: "lg",
|
|
1897
2110
|
onClick: onContinue,
|
|
1898
2111
|
loading: isSubmitting,
|
|
1899
|
-
children: /* @__PURE__ */ (0,
|
|
2112
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_intl2.FormattedMessage, { id: "continue" })
|
|
1900
2113
|
}
|
|
1901
2114
|
)
|
|
1902
2115
|
] }) });
|
|
1903
2116
|
}
|
|
1904
2117
|
|
|
1905
2118
|
// src/components/RecoveryModal/index.tsx
|
|
1906
|
-
var
|
|
2119
|
+
var import_react9 = require("react");
|
|
1907
2120
|
var import_react_intl3 = require("react-intl");
|
|
1908
|
-
var
|
|
1909
|
-
|
|
1910
|
-
// src/store/useModalStore.ts
|
|
1911
|
-
var import_zustand3 = require("zustand");
|
|
1912
|
-
var useSOLModalStore = (0, import_zustand3.create)((set) => ({
|
|
1913
|
-
isOpen: false,
|
|
1914
|
-
type: "",
|
|
1915
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1916
|
-
close: () => set({ isOpen: false })
|
|
1917
|
-
}));
|
|
1918
|
-
var useTRONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1919
|
-
isOpen: false,
|
|
1920
|
-
type: "",
|
|
1921
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1922
|
-
close: () => set({ isOpen: false })
|
|
1923
|
-
}));
|
|
1924
|
-
var useTONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1925
|
-
isOpen: false,
|
|
1926
|
-
type: "",
|
|
1927
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1928
|
-
close: () => set({ isOpen: false })
|
|
1929
|
-
}));
|
|
1930
|
-
var useBTCModalStore = (0, import_zustand3.create)((set) => ({
|
|
1931
|
-
isOpen: false,
|
|
1932
|
-
type: "",
|
|
1933
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1934
|
-
close: () => set({ isOpen: false })
|
|
1935
|
-
}));
|
|
1936
|
-
var useCEXBindModalStore = (0, import_zustand3.create)((set) => ({
|
|
1937
|
-
type: "",
|
|
1938
|
-
isOpen: false,
|
|
1939
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1940
|
-
close: () => set({ isOpen: false })
|
|
1941
|
-
}));
|
|
2121
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
1942
2122
|
|
|
1943
2123
|
// src/components/CEXBindModal/index.tsx
|
|
1944
|
-
var
|
|
2124
|
+
var import_react10 = require("react");
|
|
1945
2125
|
var import_react_intl4 = require("react-intl");
|
|
1946
|
-
var
|
|
2126
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
2127
|
+
|
|
2128
|
+
// src/components/HashPanel/index.tsx
|
|
2129
|
+
var import_viem4 = require("viem");
|
|
2130
|
+
var import_react11 = require("react");
|
|
2131
|
+
var import_react_query = require("@tanstack/react-query");
|
|
2132
|
+
|
|
2133
|
+
// src/components/Drawer/index.tsx
|
|
2134
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
2135
|
+
|
|
2136
|
+
// src/components/ModalDrawer/index.tsx
|
|
2137
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
2138
|
+
|
|
2139
|
+
// src/components/HashPanel/index.tsx
|
|
2140
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
1947
2141
|
|
|
1948
2142
|
// src/context/BusinessProvider.tsx
|
|
1949
|
-
var
|
|
2143
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
1950
2144
|
|
|
1951
2145
|
// src/context/index.tsx
|
|
1952
|
-
var
|
|
2146
|
+
var import_jsx_runtime57 = (
|
|
1953
2147
|
// <MpcWalletProvider>
|
|
1954
2148
|
require("react/jsx-runtime")
|
|
1955
2149
|
);
|
|
1956
2150
|
|
|
1957
2151
|
// src/hooks/useWalletInit.ts
|
|
1958
|
-
var
|
|
2152
|
+
var import_react13 = require("react");
|
|
1959
2153
|
var AppClientId2 = getAppClientId();
|
|
1960
2154
|
|
|
1961
2155
|
// src/hooks/useInit.tsx
|
|
1962
|
-
var
|
|
2156
|
+
var import_react14 = require("react");
|
|
1963
2157
|
|
|
1964
2158
|
// src/MatchContext.tsx
|
|
1965
|
-
var
|
|
2159
|
+
var import_react_query2 = require("@tanstack/react-query");
|
|
1966
2160
|
var import_react_intl5 = require("react-intl");
|
|
1967
|
-
var
|
|
1968
|
-
var queryClient = new
|
|
1969
|
-
var MatchContext = (0,
|
|
2161
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
2162
|
+
var queryClient = new import_react_query2.QueryClient();
|
|
2163
|
+
var MatchContext = (0, import_react15.createContext)(void 0);
|
|
1970
2164
|
var useMatch = () => {
|
|
1971
|
-
const context = (0,
|
|
2165
|
+
const context = (0, import_react15.useContext)(MatchContext);
|
|
1972
2166
|
if (context === void 0) {
|
|
1973
2167
|
throw new Error("useMatch must be used within a MatchProvider");
|
|
1974
2168
|
}
|
|
@@ -1995,7 +2189,7 @@ function useUserInfo() {
|
|
|
1995
2189
|
const { open: TONOpen } = useTONModalStore();
|
|
1996
2190
|
const { open: BTCOpen } = useBTCModalStore();
|
|
1997
2191
|
const { open: CEXBindOpen } = useCEXBindModalStore();
|
|
1998
|
-
const isLogin = (0,
|
|
2192
|
+
const isLogin = (0, import_react16.useMemo)(() => !!token && !!overview, [token, overview]);
|
|
1999
2193
|
const logout = async () => {
|
|
2000
2194
|
try {
|
|
2001
2195
|
await toLogoutApi();
|
|
@@ -2229,7 +2423,7 @@ function useUserInfo() {
|
|
|
2229
2423
|
}
|
|
2230
2424
|
|
|
2231
2425
|
// src/components/EmailModal/StepVerify.tsx
|
|
2232
|
-
var
|
|
2426
|
+
var import_react17 = require("react");
|
|
2233
2427
|
|
|
2234
2428
|
// src/config/index.tsx
|
|
2235
2429
|
var EMAIL_INTERVAL = 60;
|
|
@@ -2237,21 +2431,21 @@ var EMAIL_CODE_LENGTH = 6;
|
|
|
2237
2431
|
|
|
2238
2432
|
// src/components/EmailModal/StepVerify.tsx
|
|
2239
2433
|
var import_react_intl6 = require("react-intl");
|
|
2240
|
-
var
|
|
2434
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
2241
2435
|
function StepVerify(props) {
|
|
2242
2436
|
const intl = (0, import_react_intl6.useIntl)();
|
|
2243
2437
|
const { getLoginEmailCode, loginByEmail } = useUserInfo();
|
|
2244
|
-
const [error, setError] = (0,
|
|
2245
|
-
const [code, setCode] = (0,
|
|
2246
|
-
const [sending, setSending] = (0,
|
|
2247
|
-
const [submitting, setSubmitting] = (0,
|
|
2248
|
-
const sendTimeRef = (0,
|
|
2249
|
-
const [sendBtnText, setSendBtnText] = (0,
|
|
2438
|
+
const [error, setError] = (0, import_react17.useState)("");
|
|
2439
|
+
const [code, setCode] = (0, import_react17.useState)("");
|
|
2440
|
+
const [sending, setSending] = (0, import_react17.useState)(false);
|
|
2441
|
+
const [submitting, setSubmitting] = (0, import_react17.useState)(false);
|
|
2442
|
+
const sendTimeRef = (0, import_react17.useRef)(0);
|
|
2443
|
+
const [sendBtnText, setSendBtnText] = (0, import_react17.useState)(intl.formatMessage({
|
|
2250
2444
|
id: "send"
|
|
2251
2445
|
}));
|
|
2252
2446
|
const intervalTime = EMAIL_INTERVAL;
|
|
2253
2447
|
const codeLength = EMAIL_CODE_LENGTH;
|
|
2254
|
-
const intervalRef = (0,
|
|
2448
|
+
const intervalRef = (0, import_react17.useRef)(null);
|
|
2255
2449
|
const isDownMd = useDownMd();
|
|
2256
2450
|
const onSend = async () => {
|
|
2257
2451
|
if (sendTimeRef.current > 0) {
|
|
@@ -2282,7 +2476,7 @@ function StepVerify(props) {
|
|
|
2282
2476
|
setSending(false);
|
|
2283
2477
|
}
|
|
2284
2478
|
};
|
|
2285
|
-
(0,
|
|
2479
|
+
(0, import_react17.useEffect)(() => {
|
|
2286
2480
|
onSend();
|
|
2287
2481
|
return () => {
|
|
2288
2482
|
if (intervalRef.current) {
|
|
@@ -2290,7 +2484,7 @@ function StepVerify(props) {
|
|
|
2290
2484
|
}
|
|
2291
2485
|
};
|
|
2292
2486
|
}, []);
|
|
2293
|
-
const canContinue = (0,
|
|
2487
|
+
const canContinue = (0, import_react17.useMemo)(() => {
|
|
2294
2488
|
return code.length === codeLength;
|
|
2295
2489
|
}, [code]);
|
|
2296
2490
|
const onContinue = async () => {
|
|
@@ -2314,17 +2508,17 @@ function StepVerify(props) {
|
|
|
2314
2508
|
setSubmitting(false);
|
|
2315
2509
|
}
|
|
2316
2510
|
};
|
|
2317
|
-
return /* @__PURE__ */ (0,
|
|
2318
|
-
/* @__PURE__ */ (0,
|
|
2319
|
-
/* @__PURE__ */ (0,
|
|
2320
|
-
/* @__PURE__ */ (0,
|
|
2321
|
-
/* @__PURE__ */ (0,
|
|
2322
|
-
/* @__PURE__ */ (0,
|
|
2511
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-box", children: [
|
|
2512
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-header", children: [
|
|
2513
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
|
|
2514
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-header-content", children: [
|
|
2515
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-value", children: props.email }),
|
|
2516
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_intl6.FormattedMessage, { id: "sendEmailTips" }) })
|
|
2323
2517
|
] })
|
|
2324
2518
|
] }),
|
|
2325
|
-
/* @__PURE__ */ (0,
|
|
2519
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Field, { label: intl.formatMessage({
|
|
2326
2520
|
id: "verificationCode"
|
|
2327
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
2521
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2328
2522
|
Input,
|
|
2329
2523
|
{
|
|
2330
2524
|
placeholder: intl.formatMessage({
|
|
@@ -2334,7 +2528,7 @@ function StepVerify(props) {
|
|
|
2334
2528
|
maxLength: codeLength,
|
|
2335
2529
|
onChange: (e) => setCode(e.target.value),
|
|
2336
2530
|
value: code,
|
|
2337
|
-
after: /* @__PURE__ */ (0,
|
|
2531
|
+
after: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2338
2532
|
Button,
|
|
2339
2533
|
{
|
|
2340
2534
|
highlight: true,
|
|
@@ -2353,13 +2547,13 @@ function StepVerify(props) {
|
|
|
2353
2547
|
)
|
|
2354
2548
|
}
|
|
2355
2549
|
) }),
|
|
2356
|
-
/* @__PURE__ */ (0,
|
|
2550
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_intl6.FormattedMessage, { id: "continue" }) })
|
|
2357
2551
|
] });
|
|
2358
2552
|
}
|
|
2359
2553
|
|
|
2360
2554
|
// src/components/EmailModal/index.tsx
|
|
2361
2555
|
var import_react_intl7 = require("react-intl");
|
|
2362
|
-
var
|
|
2556
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
2363
2557
|
function EmailModal({
|
|
2364
2558
|
isOpen = false,
|
|
2365
2559
|
width = 480,
|
|
@@ -2367,16 +2561,16 @@ function EmailModal({
|
|
|
2367
2561
|
onBack,
|
|
2368
2562
|
onLogin
|
|
2369
2563
|
}) {
|
|
2370
|
-
const [step, setStep] = (0,
|
|
2371
|
-
const [emailVal, setEmailVal] = (0,
|
|
2564
|
+
const [step, setStep] = (0, import_react18.useState)("input");
|
|
2565
|
+
const [emailVal, setEmailVal] = (0, import_react18.useState)("");
|
|
2372
2566
|
const intl = (0, import_react_intl7.useIntl)();
|
|
2373
|
-
(0,
|
|
2567
|
+
(0, import_react18.useEffect)(() => {
|
|
2374
2568
|
if (!isOpen) {
|
|
2375
2569
|
setStep("input");
|
|
2376
2570
|
setEmailVal("");
|
|
2377
2571
|
}
|
|
2378
2572
|
}, [isOpen]);
|
|
2379
|
-
return /* @__PURE__ */ (0,
|
|
2573
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
2380
2574
|
ModalWithHeader,
|
|
2381
2575
|
{
|
|
2382
2576
|
isOpen,
|
|
@@ -2386,17 +2580,17 @@ function EmailModal({
|
|
|
2386
2580
|
id: "email"
|
|
2387
2581
|
}),
|
|
2388
2582
|
onBack: step == "verify" ? () => setStep("input") : onBack,
|
|
2389
|
-
children: step === "input" ? /* @__PURE__ */ (0,
|
|
2583
|
+
children: step === "input" ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(StepEmail, { email: emailVal, onContinue: (email) => {
|
|
2390
2584
|
setEmailVal(email);
|
|
2391
2585
|
setStep("verify");
|
|
2392
|
-
} }) : /* @__PURE__ */ (0,
|
|
2586
|
+
} }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(StepVerify, { email: emailVal, onSuccess: onLogin })
|
|
2393
2587
|
}
|
|
2394
2588
|
);
|
|
2395
2589
|
}
|
|
2396
2590
|
|
|
2397
2591
|
// src/components/Popover/index.tsx
|
|
2398
|
-
var
|
|
2399
|
-
var
|
|
2592
|
+
var import_react19 = require("react");
|
|
2593
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
2400
2594
|
function Popover({
|
|
2401
2595
|
children,
|
|
2402
2596
|
content,
|
|
@@ -2405,8 +2599,8 @@ function Popover({
|
|
|
2405
2599
|
className = "",
|
|
2406
2600
|
gap = "20px"
|
|
2407
2601
|
}) {
|
|
2408
|
-
const [active, setActive] = (0,
|
|
2409
|
-
return children && /* @__PURE__ */ (0,
|
|
2602
|
+
const [active, setActive] = (0, import_react19.useState)(false);
|
|
2603
|
+
return children && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
2410
2604
|
"div",
|
|
2411
2605
|
{
|
|
2412
2606
|
onClick: () => {
|
|
@@ -2417,18 +2611,18 @@ function Popover({
|
|
|
2417
2611
|
className: `matchid-popover-box matchid-popover-${position} matchid-popover-${type} ${className} ${type == "click" && active ? "matchid-popover-click-active" : ""}`,
|
|
2418
2612
|
children: [
|
|
2419
2613
|
children,
|
|
2420
|
-
/* @__PURE__ */ (0,
|
|
2614
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { style: {
|
|
2421
2615
|
paddingTop: gap
|
|
2422
|
-
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0,
|
|
2616
|
+
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: `matchid-popover-content`, children: content }) })
|
|
2423
2617
|
]
|
|
2424
2618
|
}
|
|
2425
2619
|
);
|
|
2426
2620
|
}
|
|
2427
2621
|
|
|
2428
2622
|
// src/components/LoginBox/index.tsx
|
|
2429
|
-
var
|
|
2623
|
+
var import_react20 = require("react");
|
|
2430
2624
|
var import_react_intl8 = require("react-intl");
|
|
2431
|
-
var
|
|
2625
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
2432
2626
|
var RecommendItem = ({
|
|
2433
2627
|
icon,
|
|
2434
2628
|
name,
|
|
@@ -2437,20 +2631,20 @@ var RecommendItem = ({
|
|
|
2437
2631
|
children,
|
|
2438
2632
|
footer
|
|
2439
2633
|
}) => {
|
|
2440
|
-
return /* @__PURE__ */ (0,
|
|
2441
|
-
/* @__PURE__ */ (0,
|
|
2442
|
-
/* @__PURE__ */ (0,
|
|
2443
|
-
/* @__PURE__ */ (0,
|
|
2444
|
-
/* @__PURE__ */ (0,
|
|
2634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method", children: [
|
|
2635
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method-item", onClick, children: [
|
|
2636
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method-content", children: [
|
|
2637
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-method-icon", children: icon }),
|
|
2638
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "matchid-login-recommend-method-name", children: name })
|
|
2445
2639
|
] }),
|
|
2446
|
-
footer ? footer : children ? /* @__PURE__ */ (0,
|
|
2640
|
+
footer ? footer : children ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2447
2641
|
ArrowDownIcon,
|
|
2448
2642
|
{
|
|
2449
2643
|
className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
|
|
2450
2644
|
size: 20,
|
|
2451
2645
|
color: "var(--matchid-arrow-color)"
|
|
2452
2646
|
}
|
|
2453
|
-
) : /* @__PURE__ */ (0,
|
|
2647
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2454
2648
|
ArrowRightIcon,
|
|
2455
2649
|
{
|
|
2456
2650
|
className: "matchid-login-recommend-method-arrow",
|
|
@@ -2459,7 +2653,7 @@ var RecommendItem = ({
|
|
|
2459
2653
|
}
|
|
2460
2654
|
)
|
|
2461
2655
|
] }),
|
|
2462
|
-
children && /* @__PURE__ */ (0,
|
|
2656
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2463
2657
|
"div",
|
|
2464
2658
|
{
|
|
2465
2659
|
className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
|
|
@@ -2484,128 +2678,128 @@ function LoginBox({
|
|
|
2484
2678
|
walletMethods = ["evm", "sol", "btc", "tron"],
|
|
2485
2679
|
inModal = false
|
|
2486
2680
|
}) {
|
|
2487
|
-
const [emailOpen, setEmailOpen] = (0,
|
|
2681
|
+
const [emailOpen, setEmailOpen] = (0, import_react20.useState)(false);
|
|
2488
2682
|
const { login } = useUserInfo();
|
|
2489
|
-
const [showWallet, setShowWallet] = (0,
|
|
2683
|
+
const [showWallet, setShowWallet] = (0, import_react20.useState)(false);
|
|
2490
2684
|
const intl = (0, import_react_intl8.useIntl)();
|
|
2491
2685
|
const isDownMd = useDownMd();
|
|
2492
2686
|
const methodMap = {
|
|
2493
2687
|
wallet: {
|
|
2494
|
-
icon: /* @__PURE__ */ (0,
|
|
2688
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(WalletIcon, { size: isDownMd ? 36 : 40 }),
|
|
2495
2689
|
name: intl.formatMessage({ id: "wallet" }),
|
|
2496
2690
|
onClick: () => setShowWallet(!showWallet),
|
|
2497
2691
|
type: "wallet"
|
|
2498
2692
|
},
|
|
2499
2693
|
email: {
|
|
2500
|
-
icon: /* @__PURE__ */ (0,
|
|
2694
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EmailIcon, { size: isDownMd ? 36 : 40 }),
|
|
2501
2695
|
name: intl.formatMessage({ id: "email" }),
|
|
2502
2696
|
onClick: () => {
|
|
2503
2697
|
setEmailOpen(true);
|
|
2504
2698
|
}
|
|
2505
2699
|
},
|
|
2506
2700
|
google: {
|
|
2507
|
-
icon: /* @__PURE__ */ (0,
|
|
2701
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(GoogleIcon, { size: isDownMd ? 36 : 40 }),
|
|
2508
2702
|
name: "Google",
|
|
2509
2703
|
onClick: () => login("google")
|
|
2510
2704
|
},
|
|
2511
2705
|
twitter: {
|
|
2512
|
-
icon: /* @__PURE__ */ (0,
|
|
2706
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(XIcon, { size: isDownMd ? 36 : 40 }),
|
|
2513
2707
|
name: "X",
|
|
2514
2708
|
onClick: () => login("twitter")
|
|
2515
2709
|
},
|
|
2516
2710
|
telegram: {
|
|
2517
|
-
icon: /* @__PURE__ */ (0,
|
|
2711
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TelegramIcon, { size: isDownMd ? 36 : 40 }),
|
|
2518
2712
|
name: "Telegram",
|
|
2519
2713
|
onClick: () => login("telegram")
|
|
2520
2714
|
},
|
|
2521
2715
|
github: {
|
|
2522
|
-
icon: /* @__PURE__ */ (0,
|
|
2716
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(GithubIcon, { size: isDownMd ? 36 : 40 }),
|
|
2523
2717
|
name: "Github",
|
|
2524
2718
|
onClick: () => login("github")
|
|
2525
2719
|
},
|
|
2526
2720
|
discord: {
|
|
2527
|
-
icon: /* @__PURE__ */ (0,
|
|
2721
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(DiscordIcon, { size: isDownMd ? 36 : 40 }),
|
|
2528
2722
|
name: "Discord",
|
|
2529
2723
|
onClick: () => login("discord")
|
|
2530
2724
|
},
|
|
2531
2725
|
linkedin: {
|
|
2532
|
-
icon: /* @__PURE__ */ (0,
|
|
2726
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
|
|
2533
2727
|
name: "LinkedIn",
|
|
2534
2728
|
onClick: () => login("linkedin")
|
|
2535
2729
|
},
|
|
2536
2730
|
facebook: {
|
|
2537
|
-
icon: /* @__PURE__ */ (0,
|
|
2731
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(FacebookIcon, { size: isDownMd ? 36 : 40 }),
|
|
2538
2732
|
name: "Facebook",
|
|
2539
2733
|
onClick: () => login("facebook")
|
|
2540
2734
|
},
|
|
2541
2735
|
youtube: {
|
|
2542
|
-
icon: /* @__PURE__ */ (0,
|
|
2736
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
|
|
2543
2737
|
name: "Youtube",
|
|
2544
2738
|
onClick: () => login("youtube")
|
|
2545
2739
|
}
|
|
2546
2740
|
};
|
|
2547
2741
|
const walletMap = {
|
|
2548
2742
|
evm: {
|
|
2549
|
-
icon: /* @__PURE__ */ (0,
|
|
2550
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2743
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2744
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2551
2745
|
name: "EVM",
|
|
2552
2746
|
onClick: () => login("evm")
|
|
2553
2747
|
},
|
|
2554
2748
|
sol: {
|
|
2555
|
-
icon: /* @__PURE__ */ (0,
|
|
2556
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2749
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2750
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2557
2751
|
name: "SOL",
|
|
2558
2752
|
onClick: () => login("sol")
|
|
2559
2753
|
},
|
|
2560
2754
|
btc: {
|
|
2561
|
-
icon: /* @__PURE__ */ (0,
|
|
2562
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2755
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2756
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2563
2757
|
name: "BTC",
|
|
2564
2758
|
onClick: () => login("btc")
|
|
2565
2759
|
},
|
|
2566
2760
|
tron: {
|
|
2567
|
-
icon: /* @__PURE__ */ (0,
|
|
2568
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2761
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2762
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2569
2763
|
name: "TRON",
|
|
2570
2764
|
onClick: () => login("tron")
|
|
2571
2765
|
},
|
|
2572
2766
|
ton: {
|
|
2573
|
-
icon: /* @__PURE__ */ (0,
|
|
2574
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2767
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2768
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
2575
2769
|
name: "TON",
|
|
2576
2770
|
onClick: () => login("ton")
|
|
2577
2771
|
}
|
|
2578
2772
|
};
|
|
2579
|
-
return /* @__PURE__ */ (0,
|
|
2580
|
-
(!inModal || !emailOpen) && /* @__PURE__ */ (0,
|
|
2581
|
-
/* @__PURE__ */ (0,
|
|
2582
|
-
return /* @__PURE__ */ (0,
|
|
2773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
2774
|
+
(!inModal || !emailOpen) && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-box", children: [
|
|
2775
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-list", children: recommendMethods.map((m) => {
|
|
2776
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2583
2777
|
RecommendItem,
|
|
2584
2778
|
{
|
|
2585
2779
|
icon: methodMap[m]?.icon,
|
|
2586
2780
|
name: methodMap[m]?.name,
|
|
2587
2781
|
onClick: methodMap[m]?.onClick,
|
|
2588
2782
|
showChildren: m == "wallet" && showWallet,
|
|
2589
|
-
children: m == "wallet" && /* @__PURE__ */ (0,
|
|
2590
|
-
/* @__PURE__ */ (0,
|
|
2591
|
-
/* @__PURE__ */ (0,
|
|
2783
|
+
children: m == "wallet" && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
2784
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
2785
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-list", children: walletMethods.map((n) => {
|
|
2592
2786
|
const m2 = walletMap[n];
|
|
2593
|
-
return /* @__PURE__ */ (0,
|
|
2787
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
2594
2788
|
"div",
|
|
2595
2789
|
{
|
|
2596
2790
|
className: "matchid-login-recommend-wallet-item",
|
|
2597
2791
|
onClick: m2.onClick,
|
|
2598
2792
|
children: [
|
|
2599
|
-
/* @__PURE__ */ (0,
|
|
2600
|
-
/* @__PURE__ */ (0,
|
|
2601
|
-
/* @__PURE__ */ (0,
|
|
2793
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-wallet-item-content", children: [
|
|
2794
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
|
|
2795
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2602
2796
|
"div",
|
|
2603
2797
|
{
|
|
2604
2798
|
className: "matchid-login-recommend-wallet-item-hover-icon",
|
|
2605
2799
|
children: m2.activeIcon
|
|
2606
2800
|
}
|
|
2607
2801
|
),
|
|
2608
|
-
/* @__PURE__ */ (0,
|
|
2802
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2609
2803
|
"span",
|
|
2610
2804
|
{
|
|
2611
2805
|
className: "matchid-login-recommend-wallet-item-name",
|
|
@@ -2613,7 +2807,7 @@ function LoginBox({
|
|
|
2613
2807
|
}
|
|
2614
2808
|
)
|
|
2615
2809
|
] }),
|
|
2616
|
-
/* @__PURE__ */ (0,
|
|
2810
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2617
2811
|
ArrowRightIcon,
|
|
2618
2812
|
{
|
|
2619
2813
|
className: "matchid-login-recommend-wallet-item-arrow",
|
|
@@ -2631,10 +2825,10 @@ function LoginBox({
|
|
|
2631
2825
|
m
|
|
2632
2826
|
);
|
|
2633
2827
|
}) }),
|
|
2634
|
-
methods.length > 0 && /* @__PURE__ */ (0,
|
|
2635
|
-
/* @__PURE__ */ (0,
|
|
2636
|
-
/* @__PURE__ */ (0,
|
|
2637
|
-
return /* @__PURE__ */ (0,
|
|
2828
|
+
methods.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-other", children: [
|
|
2829
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_intl8.FormattedMessage, { id: "otherLoginMethods" }) }),
|
|
2830
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-method-box", children: methods.map((m) => {
|
|
2831
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2638
2832
|
"div",
|
|
2639
2833
|
{
|
|
2640
2834
|
className: "matchid-login-method-item",
|
|
@@ -2647,7 +2841,7 @@ function LoginBox({
|
|
|
2647
2841
|
}) })
|
|
2648
2842
|
] })
|
|
2649
2843
|
] }),
|
|
2650
|
-
/* @__PURE__ */ (0,
|
|
2844
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2651
2845
|
EmailModal,
|
|
2652
2846
|
{
|
|
2653
2847
|
isOpen: emailOpen,
|
|
@@ -2663,56 +2857,56 @@ function LoginBox({
|
|
|
2663
2857
|
}
|
|
2664
2858
|
|
|
2665
2859
|
// src/components/LoginButton/index.tsx
|
|
2666
|
-
var
|
|
2860
|
+
var import_react22 = require("react");
|
|
2667
2861
|
|
|
2668
2862
|
// src/components/LoginPanel/index.tsx
|
|
2669
2863
|
var import_react_intl9 = require("react-intl");
|
|
2670
|
-
var
|
|
2864
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
2671
2865
|
function LoginPanel({
|
|
2672
2866
|
header,
|
|
2673
2867
|
onClose,
|
|
2674
2868
|
...props
|
|
2675
2869
|
}) {
|
|
2676
2870
|
const isDownMd = useDownMd();
|
|
2677
|
-
return /* @__PURE__ */ (0,
|
|
2678
|
-
header ? header : /* @__PURE__ */ (0,
|
|
2679
|
-
/* @__PURE__ */ (0,
|
|
2680
|
-
/* @__PURE__ */ (0,
|
|
2681
|
-
/* @__PURE__ */ (0,
|
|
2871
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel", children: [
|
|
2872
|
+
header ? header : /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel-header", children: [
|
|
2873
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel-header-content", children: [
|
|
2874
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_intl9.FormattedMessage, { id: "loginTitle" }) }),
|
|
2875
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_intl9.FormattedMessage, { id: "loginTips" }) })
|
|
2682
2876
|
] }),
|
|
2683
|
-
onClose && /* @__PURE__ */ (0,
|
|
2877
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
|
|
2684
2878
|
] }),
|
|
2685
|
-
/* @__PURE__ */ (0,
|
|
2686
|
-
/* @__PURE__ */ (0,
|
|
2879
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-divide" }),
|
|
2880
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LoginBox, { ...props }) })
|
|
2687
2881
|
] });
|
|
2688
2882
|
}
|
|
2689
2883
|
|
|
2690
2884
|
// src/components/LoginModal/index.tsx
|
|
2691
|
-
var
|
|
2885
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
2692
2886
|
function LoginModal({
|
|
2693
2887
|
isOpen = false,
|
|
2694
2888
|
width = 480,
|
|
2695
2889
|
...props
|
|
2696
2890
|
}) {
|
|
2697
2891
|
const { isLogin } = useUserInfo();
|
|
2698
|
-
return /* @__PURE__ */ (0,
|
|
2892
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
2699
2893
|
Modal,
|
|
2700
2894
|
{
|
|
2701
2895
|
isOpen: isOpen && !isLogin,
|
|
2702
2896
|
width,
|
|
2703
|
-
children: /* @__PURE__ */ (0,
|
|
2897
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LoginPanel, { ...props, inModal: true })
|
|
2704
2898
|
}
|
|
2705
2899
|
);
|
|
2706
2900
|
}
|
|
2707
2901
|
|
|
2708
2902
|
// src/components/UserPopover/index.tsx
|
|
2709
|
-
var
|
|
2903
|
+
var import_react21 = require("react");
|
|
2710
2904
|
|
|
2711
2905
|
// src/assets/icon/ProfileIcon.tsx
|
|
2712
|
-
var
|
|
2906
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
2713
2907
|
function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
2714
|
-
return /* @__PURE__ */ (0,
|
|
2715
|
-
/* @__PURE__ */ (0,
|
|
2908
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
2909
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
2716
2910
|
"path",
|
|
2717
2911
|
{
|
|
2718
2912
|
fillRule: "evenodd",
|
|
@@ -2721,7 +2915,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
2721
2915
|
fill: color
|
|
2722
2916
|
}
|
|
2723
2917
|
),
|
|
2724
|
-
/* @__PURE__ */ (0,
|
|
2918
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
2725
2919
|
"path",
|
|
2726
2920
|
{
|
|
2727
2921
|
fillRule: "evenodd",
|
|
@@ -2735,10 +2929,10 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
2735
2929
|
|
|
2736
2930
|
// src/components/UserPopover/index.tsx
|
|
2737
2931
|
var import_react_intl10 = require("react-intl");
|
|
2738
|
-
var
|
|
2932
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
2739
2933
|
function UserContent() {
|
|
2740
2934
|
const { logout, address, username } = useUserInfo();
|
|
2741
|
-
const [logouting, setLogouting] = (0,
|
|
2935
|
+
const [logouting, setLogouting] = (0, import_react21.useState)(false);
|
|
2742
2936
|
const onLogout = async () => {
|
|
2743
2937
|
if (logouting) return;
|
|
2744
2938
|
try {
|
|
@@ -2756,34 +2950,34 @@ function UserContent() {
|
|
|
2756
2950
|
rightIcon,
|
|
2757
2951
|
onClick
|
|
2758
2952
|
}) => {
|
|
2759
|
-
return /* @__PURE__ */ (0,
|
|
2760
|
-
/* @__PURE__ */ (0,
|
|
2953
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-item", onClick, children: [
|
|
2954
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: `matchid-user-popover-item-content`, children: [
|
|
2761
2955
|
icon,
|
|
2762
|
-
/* @__PURE__ */ (0,
|
|
2956
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "matchid-user-popover-item-text", children })
|
|
2763
2957
|
] }),
|
|
2764
2958
|
rightIcon
|
|
2765
2959
|
] });
|
|
2766
2960
|
};
|
|
2767
2961
|
const UserDivider = () => {
|
|
2768
|
-
return /* @__PURE__ */ (0,
|
|
2962
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: `matchid-user-popover-divider` });
|
|
2769
2963
|
};
|
|
2770
|
-
const [usernameOpen, setUsernameOpen] = (0,
|
|
2964
|
+
const [usernameOpen, setUsernameOpen] = (0, import_react21.useState)(false);
|
|
2771
2965
|
const [copied, setCopied] = useCopyClipboard();
|
|
2772
2966
|
const intl = (0, import_react_intl10.useIntl)();
|
|
2773
|
-
return /* @__PURE__ */ (0,
|
|
2774
|
-
/* @__PURE__ */ (0,
|
|
2775
|
-
/* @__PURE__ */ (0,
|
|
2967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-content", children: [
|
|
2968
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-list", children: [
|
|
2969
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserItem, { onClick: () => {
|
|
2776
2970
|
setCopied(address);
|
|
2777
|
-
}, icon: copied ? /* @__PURE__ */ (0,
|
|
2778
|
-
/* @__PURE__ */ (0,
|
|
2779
|
-
/* @__PURE__ */ (0,
|
|
2971
|
+
}, icon: copied ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
|
|
2972
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserDivider, {}),
|
|
2973
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserItem, { onClick: () => {
|
|
2780
2974
|
setUsernameOpen(true);
|
|
2781
|
-
}, icon: /* @__PURE__ */ (0,
|
|
2975
|
+
}, icon: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
|
|
2782
2976
|
id: "setUsername"
|
|
2783
2977
|
}) })
|
|
2784
2978
|
] }),
|
|
2785
|
-
/* @__PURE__ */ (0,
|
|
2786
|
-
/* @__PURE__ */ (0,
|
|
2979
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_intl10.FormattedMessage, { id: "disconnect" }) }),
|
|
2980
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UsernameModal, { isOpen: usernameOpen, onClose: () => {
|
|
2787
2981
|
setUsernameOpen(false);
|
|
2788
2982
|
}, onSuccess: () => {
|
|
2789
2983
|
setUsernameOpen(false);
|
|
@@ -2794,12 +2988,12 @@ function UserPopover({
|
|
|
2794
2988
|
children,
|
|
2795
2989
|
...props
|
|
2796
2990
|
}) {
|
|
2797
|
-
return /* @__PURE__ */ (0,
|
|
2991
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Popover, { ...props, content: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserContent, {}), children });
|
|
2798
2992
|
}
|
|
2799
2993
|
|
|
2800
2994
|
// src/components/LoginButton/index.tsx
|
|
2801
2995
|
var import_react_intl11 = require("react-intl");
|
|
2802
|
-
var
|
|
2996
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
2803
2997
|
function LoginButton({
|
|
2804
2998
|
loginRender,
|
|
2805
2999
|
methods,
|
|
@@ -2813,10 +3007,10 @@ function LoginButton({
|
|
|
2813
3007
|
}) {
|
|
2814
3008
|
const intl = (0, import_react_intl11.useIntl)();
|
|
2815
3009
|
const { isLogin, username } = useUserInfo();
|
|
2816
|
-
const [loginOpen, setLoginOpen] = (0,
|
|
3010
|
+
const [loginOpen, setLoginOpen] = (0, import_react22.useState)(false);
|
|
2817
3011
|
if (!isLogin) {
|
|
2818
|
-
return /* @__PURE__ */ (0,
|
|
2819
|
-
/* @__PURE__ */ (0,
|
|
3012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
3013
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
2820
3014
|
LoginModal,
|
|
2821
3015
|
{
|
|
2822
3016
|
methods,
|
|
@@ -2826,32 +3020,32 @@ function LoginButton({
|
|
|
2826
3020
|
onClose: () => setLoginOpen(false)
|
|
2827
3021
|
}
|
|
2828
3022
|
),
|
|
2829
|
-
/* @__PURE__ */ (0,
|
|
2830
|
-
/* @__PURE__ */ (0,
|
|
2831
|
-
/* @__PURE__ */ (0,
|
|
3023
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
|
|
3024
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UnLoginIcon_default, {}),
|
|
3025
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_intl11.FormattedMessage, { id: "login" }) })
|
|
2832
3026
|
] })
|
|
2833
3027
|
] });
|
|
2834
3028
|
}
|
|
2835
|
-
return loginRender ? /* @__PURE__ */ (0,
|
|
2836
|
-
/* @__PURE__ */ (0,
|
|
2837
|
-
/* @__PURE__ */ (0,
|
|
3029
|
+
return loginRender ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_jsx_runtime67.Fragment, { children: loginRender }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
|
|
3030
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(LoginIcon_default, {}),
|
|
3031
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
|
|
2838
3032
|
id: "user"
|
|
2839
3033
|
}) })
|
|
2840
3034
|
] }) });
|
|
2841
3035
|
}
|
|
2842
3036
|
|
|
2843
3037
|
// src/components/UsernameModal/index.tsx
|
|
2844
|
-
var
|
|
3038
|
+
var import_react23 = require("react");
|
|
2845
3039
|
|
|
2846
3040
|
// src/assets/icon/InfoRoundIcon.tsx
|
|
2847
|
-
var
|
|
3041
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
2848
3042
|
function InfoRoundIcon({
|
|
2849
3043
|
size,
|
|
2850
3044
|
color = "#6E6E6E",
|
|
2851
3045
|
...props
|
|
2852
3046
|
}) {
|
|
2853
|
-
return /* @__PURE__ */ (0,
|
|
2854
|
-
/* @__PURE__ */ (0,
|
|
3047
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
|
|
3048
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
2855
3049
|
"path",
|
|
2856
3050
|
{
|
|
2857
3051
|
fillRule: "evenodd",
|
|
@@ -2860,21 +3054,21 @@ function InfoRoundIcon({
|
|
|
2860
3054
|
fill: color
|
|
2861
3055
|
}
|
|
2862
3056
|
) }),
|
|
2863
|
-
/* @__PURE__ */ (0,
|
|
3057
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
2864
3058
|
] });
|
|
2865
3059
|
}
|
|
2866
3060
|
|
|
2867
3061
|
// src/components/UsernameModal/index.tsx
|
|
2868
3062
|
var import_react_intl12 = require("react-intl");
|
|
2869
|
-
var
|
|
3063
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
2870
3064
|
var ValidItem = ({
|
|
2871
3065
|
success = false,
|
|
2872
3066
|
text
|
|
2873
3067
|
}) => {
|
|
2874
3068
|
const isDownMd = useDownMd();
|
|
2875
|
-
return /* @__PURE__ */ (0,
|
|
2876
|
-
success ? /* @__PURE__ */ (0,
|
|
2877
|
-
/* @__PURE__ */ (0,
|
|
3069
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
|
|
3070
|
+
success ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
|
|
3071
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: text })
|
|
2878
3072
|
] });
|
|
2879
3073
|
};
|
|
2880
3074
|
function UsernameModal({
|
|
@@ -2885,23 +3079,23 @@ function UsernameModal({
|
|
|
2885
3079
|
}) {
|
|
2886
3080
|
const { username, refreshOverview } = useUserInfo();
|
|
2887
3081
|
const { isLogin } = useUserInfo();
|
|
2888
|
-
const [val, setVal] = (0,
|
|
2889
|
-
const [error, setError] = (0,
|
|
3082
|
+
const [val, setVal] = (0, import_react23.useState)(username);
|
|
3083
|
+
const [error, setError] = (0, import_react23.useState)("");
|
|
2890
3084
|
const isDownMd = useDownMd();
|
|
2891
|
-
(0,
|
|
3085
|
+
(0, import_react23.useEffect)(() => {
|
|
2892
3086
|
if (isOpen) {
|
|
2893
3087
|
setVal(username);
|
|
2894
3088
|
setError("");
|
|
2895
3089
|
}
|
|
2896
3090
|
}, [isOpen]);
|
|
2897
|
-
const isValid = (0,
|
|
3091
|
+
const isValid = (0, import_react23.useMemo)(() => {
|
|
2898
3092
|
return isValidUsername(val);
|
|
2899
3093
|
}, [val]);
|
|
2900
|
-
const isLength = (0,
|
|
3094
|
+
const isLength = (0, import_react23.useMemo)(() => {
|
|
2901
3095
|
return val.length >= 2 && val.length <= 32;
|
|
2902
3096
|
}, [val]);
|
|
2903
3097
|
const isSafe = isValid && isLength;
|
|
2904
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
3098
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react23.useState)(false);
|
|
2905
3099
|
const onSubmit = async () => {
|
|
2906
3100
|
if (isSubmitting) return;
|
|
2907
3101
|
try {
|
|
@@ -2922,12 +3116,12 @@ function UsernameModal({
|
|
|
2922
3116
|
}
|
|
2923
3117
|
};
|
|
2924
3118
|
const intl = (0, import_react_intl12.useIntl)();
|
|
2925
|
-
return /* @__PURE__ */ (0,
|
|
3119
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
2926
3120
|
id: username ? "editUsernameTitle" : "setUsernameTitle"
|
|
2927
|
-
}), children: /* @__PURE__ */ (0,
|
|
2928
|
-
/* @__PURE__ */ (0,
|
|
3121
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "matchid-username-box", children: [
|
|
3122
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Field, { label: intl.formatMessage({
|
|
2929
3123
|
id: "username"
|
|
2930
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
3124
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
2931
3125
|
Input,
|
|
2932
3126
|
{
|
|
2933
3127
|
placeholder: intl.formatMessage({
|
|
@@ -2940,8 +3134,8 @@ function UsernameModal({
|
|
|
2940
3134
|
value: val
|
|
2941
3135
|
}
|
|
2942
3136
|
) }),
|
|
2943
|
-
/* @__PURE__ */ (0,
|
|
2944
|
-
/* @__PURE__ */ (0,
|
|
3137
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "matchid-valid", children: [
|
|
3138
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
2945
3139
|
ValidItem,
|
|
2946
3140
|
{
|
|
2947
3141
|
success: isValid,
|
|
@@ -2950,21 +3144,21 @@ function UsernameModal({
|
|
|
2950
3144
|
})
|
|
2951
3145
|
}
|
|
2952
3146
|
),
|
|
2953
|
-
/* @__PURE__ */ (0,
|
|
3147
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ValidItem, { success: isLength, text: intl.formatMessage({
|
|
2954
3148
|
id: "usernameLengthError"
|
|
2955
3149
|
}) })
|
|
2956
3150
|
] }),
|
|
2957
|
-
/* @__PURE__ */ (0,
|
|
3151
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { disabled: !isSafe, loading: isSubmitting, style: {
|
|
2958
3152
|
marginTop: isDownMd ? "36px" : "64px"
|
|
2959
|
-
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
2960
|
-
/* @__PURE__ */ (0,
|
|
3153
|
+
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_intl12.FormattedMessage, { id: "confirm" }) }),
|
|
3154
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { style: {
|
|
2961
3155
|
marginTop: isDownMd ? "12px" : "24px"
|
|
2962
|
-
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0,
|
|
3156
|
+
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_intl12.FormattedMessage, { id: "cancel" }) })
|
|
2963
3157
|
] }) });
|
|
2964
3158
|
}
|
|
2965
3159
|
|
|
2966
3160
|
// src/components/SOLModal/index.tsx
|
|
2967
|
-
var
|
|
3161
|
+
var import_react25 = __toESM(require("react"));
|
|
2968
3162
|
var import_web3 = require("@solana/web3.js");
|
|
2969
3163
|
var import_wallet_adapter_react = require("@solana/wallet-adapter-react");
|
|
2970
3164
|
var import_wallet_adapter_react_ui = require("@solana/wallet-adapter-react-ui");
|
|
@@ -2983,7 +3177,7 @@ var import_styles = require("@solana/wallet-adapter-react-ui/styles.css");
|
|
|
2983
3177
|
var import_react_intl13 = require("react-intl");
|
|
2984
3178
|
|
|
2985
3179
|
// src/components/WalletModalContent/index.tsx
|
|
2986
|
-
var
|
|
3180
|
+
var import_react24 = require("react");
|
|
2987
3181
|
|
|
2988
3182
|
// src/assets/wallet.ts
|
|
2989
3183
|
var walletErrorImage = "data:image/png;base64,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";
|
|
@@ -2993,7 +3187,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
2993
3187
|
var walletSigningImage = "data:image/png;base64,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";
|
|
2994
3188
|
|
|
2995
3189
|
// src/components/WalletModalContent/index.tsx
|
|
2996
|
-
var
|
|
3190
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
2997
3191
|
function WalletModalContent({
|
|
2998
3192
|
status,
|
|
2999
3193
|
error,
|
|
@@ -3004,7 +3198,7 @@ function WalletModalContent({
|
|
|
3004
3198
|
address,
|
|
3005
3199
|
connected
|
|
3006
3200
|
}) {
|
|
3007
|
-
const pageData = (0,
|
|
3201
|
+
const pageData = (0, import_react24.useMemo)(() => {
|
|
3008
3202
|
if (status == "success") {
|
|
3009
3203
|
return {
|
|
3010
3204
|
btnText: "Disconnect Wallet",
|
|
@@ -3063,12 +3257,12 @@ function WalletModalContent({
|
|
|
3063
3257
|
statusImage: walletConnectImage
|
|
3064
3258
|
};
|
|
3065
3259
|
}, [visible, connected, status, error, address]);
|
|
3066
|
-
return /* @__PURE__ */ (0,
|
|
3067
|
-
/* @__PURE__ */ (0,
|
|
3068
|
-
/* @__PURE__ */ (0,
|
|
3069
|
-
/* @__PURE__ */ (0,
|
|
3260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: `matchid-wallet-box`, children: [
|
|
3261
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: `matchid-wallet-content`, children: [
|
|
3262
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("img", { src: pageData.statusImage }),
|
|
3263
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
|
|
3070
3264
|
] }),
|
|
3071
|
-
/* @__PURE__ */ (0,
|
|
3265
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
3072
3266
|
Button,
|
|
3073
3267
|
{
|
|
3074
3268
|
block: true,
|
|
@@ -3083,7 +3277,7 @@ function WalletModalContent({
|
|
|
3083
3277
|
}
|
|
3084
3278
|
|
|
3085
3279
|
// src/components/SOLModal/index.tsx
|
|
3086
|
-
var
|
|
3280
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
3087
3281
|
function WalletContent({
|
|
3088
3282
|
onSuccess,
|
|
3089
3283
|
type
|
|
@@ -3091,17 +3285,17 @@ function WalletContent({
|
|
|
3091
3285
|
const { setVisible, visible } = (0, import_wallet_adapter_react_ui.useWalletModal)();
|
|
3092
3286
|
const wallet = (0, import_wallet_adapter_react.useWallet)();
|
|
3093
3287
|
const { events, login } = useMatch();
|
|
3094
|
-
const [status, setStatus] = (0,
|
|
3095
|
-
const statusRef =
|
|
3096
|
-
const [error, setError] = (0,
|
|
3097
|
-
(0,
|
|
3288
|
+
const [status, setStatus] = (0, import_react25.useState)("");
|
|
3289
|
+
const statusRef = import_react25.default.useRef(status);
|
|
3290
|
+
const [error, setError] = (0, import_react25.useState)("");
|
|
3291
|
+
(0, import_react25.useEffect)(() => {
|
|
3098
3292
|
const init = async () => {
|
|
3099
3293
|
await wallet.disconnect();
|
|
3100
3294
|
setVisible(true);
|
|
3101
3295
|
};
|
|
3102
3296
|
init();
|
|
3103
3297
|
}, []);
|
|
3104
|
-
(0,
|
|
3298
|
+
(0, import_react25.useEffect)(() => {
|
|
3105
3299
|
if (wallet.connected) {
|
|
3106
3300
|
console.log("wallet.connected", wallet.connected);
|
|
3107
3301
|
toLoginInWallet();
|
|
@@ -3162,7 +3356,7 @@ function WalletContent({
|
|
|
3162
3356
|
statusRef.current = "";
|
|
3163
3357
|
}
|
|
3164
3358
|
};
|
|
3165
|
-
return /* @__PURE__ */ (0,
|
|
3359
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
3166
3360
|
WalletModalContent,
|
|
3167
3361
|
{
|
|
3168
3362
|
connected: wallet.connected,
|
|
@@ -3223,15 +3417,15 @@ function SOLModal({
|
|
|
3223
3417
|
...props
|
|
3224
3418
|
}) {
|
|
3225
3419
|
const intl = (0, import_react_intl13.useIntl)();
|
|
3226
|
-
return /* @__PURE__ */ (0,
|
|
3420
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3227
3421
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3228
3422
|
}, {
|
|
3229
3423
|
name: "SOL"
|
|
3230
|
-
}), children: /* @__PURE__ */ (0,
|
|
3424
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_wallet_adapter_react.ConnectionProvider, { endpoint: (0, import_web3.clusterApiUrl)("devnet"), children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_wallet_adapter_react.WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_wallet_adapter_react_ui.WalletModalProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(WalletContent, { onSuccess, type }) }) }) }) });
|
|
3231
3425
|
}
|
|
3232
3426
|
|
|
3233
3427
|
// src/components/TRONModal/index.tsx
|
|
3234
|
-
var
|
|
3428
|
+
var import_react27 = __toESM(require("react"));
|
|
3235
3429
|
var import_react_intl14 = require("react-intl");
|
|
3236
3430
|
|
|
3237
3431
|
// src/lib/tron/TronLinkAdapter.ts
|
|
@@ -3265,7 +3459,7 @@ var TronLinkAdapter = class {
|
|
|
3265
3459
|
};
|
|
3266
3460
|
|
|
3267
3461
|
// src/hooks/useTRONWallet.ts
|
|
3268
|
-
var
|
|
3462
|
+
var import_react26 = require("react");
|
|
3269
3463
|
|
|
3270
3464
|
// src/lib/tron/BitgetAdapter.ts
|
|
3271
3465
|
var BitgetAdapter = class {
|
|
@@ -3310,9 +3504,9 @@ var OKXAdapter = class {
|
|
|
3310
3504
|
// src/hooks/useTRONWallet.ts
|
|
3311
3505
|
var useTRONWallet = () => {
|
|
3312
3506
|
const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
3313
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
3314
|
-
const [address, setAddress] = (0,
|
|
3315
|
-
(0,
|
|
3507
|
+
const [installedWallets, setInstalledWallets] = (0, import_react26.useState)([]);
|
|
3508
|
+
const [address, setAddress] = (0, import_react26.useState)(null);
|
|
3509
|
+
(0, import_react26.useEffect)(() => {
|
|
3316
3510
|
const getInstalled = async () => {
|
|
3317
3511
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
3318
3512
|
wallet: wallet2,
|
|
@@ -3322,11 +3516,11 @@ var useTRONWallet = () => {
|
|
|
3322
3516
|
};
|
|
3323
3517
|
getInstalled();
|
|
3324
3518
|
}, []);
|
|
3325
|
-
const [wallet, chooseWallet] = (0,
|
|
3519
|
+
const [wallet, chooseWallet] = (0, import_react26.useState)(null);
|
|
3326
3520
|
const onConnect = async () => {
|
|
3327
3521
|
setAddress(await wallet.connect());
|
|
3328
3522
|
};
|
|
3329
|
-
(0,
|
|
3523
|
+
(0, import_react26.useEffect)(() => {
|
|
3330
3524
|
if (!wallet) {
|
|
3331
3525
|
setAddress(null);
|
|
3332
3526
|
}
|
|
@@ -3342,7 +3536,7 @@ var useTRONWallet = () => {
|
|
|
3342
3536
|
};
|
|
3343
3537
|
|
|
3344
3538
|
// src/components/TRONModal/index.tsx
|
|
3345
|
-
var
|
|
3539
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
3346
3540
|
function TRONModal({
|
|
3347
3541
|
type = "login",
|
|
3348
3542
|
onSuccess,
|
|
@@ -3352,15 +3546,15 @@ function TRONModal({
|
|
|
3352
3546
|
const intl = (0, import_react_intl14.useIntl)();
|
|
3353
3547
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useTRONWallet();
|
|
3354
3548
|
const iconMaps = {
|
|
3355
|
-
tronlink: /* @__PURE__ */ (0,
|
|
3356
|
-
bitget: /* @__PURE__ */ (0,
|
|
3357
|
-
okx: /* @__PURE__ */ (0,
|
|
3549
|
+
tronlink: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
|
|
3550
|
+
bitget: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(BitgetIcon, { size: isDownMd ? 36 : 40 }),
|
|
3551
|
+
okx: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
3358
3552
|
};
|
|
3359
3553
|
const { events, login } = useMatch();
|
|
3360
|
-
const [status, setStatus] = (0,
|
|
3361
|
-
const statusRef =
|
|
3362
|
-
const [error, setError] = (0,
|
|
3363
|
-
const connected = (0,
|
|
3554
|
+
const [status, setStatus] = (0, import_react27.useState)("");
|
|
3555
|
+
const statusRef = import_react27.default.useRef(status);
|
|
3556
|
+
const [error, setError] = (0, import_react27.useState)("");
|
|
3557
|
+
const connected = (0, import_react27.useMemo)(() => {
|
|
3364
3558
|
return !!address;
|
|
3365
3559
|
}, [address]);
|
|
3366
3560
|
const disconnect = async () => {
|
|
@@ -3428,7 +3622,7 @@ function TRONModal({
|
|
|
3428
3622
|
statusRef.current = "";
|
|
3429
3623
|
}
|
|
3430
3624
|
};
|
|
3431
|
-
(0,
|
|
3625
|
+
(0, import_react27.useEffect)(() => {
|
|
3432
3626
|
if (wallet) {
|
|
3433
3627
|
console.log("onConnect");
|
|
3434
3628
|
onConnect();
|
|
@@ -3436,21 +3630,21 @@ function TRONModal({
|
|
|
3436
3630
|
setStatus("");
|
|
3437
3631
|
}
|
|
3438
3632
|
}, [wallet]);
|
|
3439
|
-
(0,
|
|
3633
|
+
(0, import_react27.useEffect)(() => {
|
|
3440
3634
|
if (address) {
|
|
3441
3635
|
toLoginInWallet();
|
|
3442
3636
|
}
|
|
3443
3637
|
}, [address]);
|
|
3444
|
-
(0,
|
|
3638
|
+
(0, import_react27.useEffect)(() => {
|
|
3445
3639
|
if (!props.isOpen) {
|
|
3446
3640
|
disconnect();
|
|
3447
3641
|
}
|
|
3448
3642
|
}, [props.isOpen]);
|
|
3449
|
-
return /* @__PURE__ */ (0,
|
|
3643
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3450
3644
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3451
3645
|
}, {
|
|
3452
3646
|
name: "TRON"
|
|
3453
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
3647
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3454
3648
|
WalletModalContent,
|
|
3455
3649
|
{
|
|
3456
3650
|
error,
|
|
@@ -3463,9 +3657,9 @@ function TRONModal({
|
|
|
3463
3657
|
setVisible: () => {
|
|
3464
3658
|
}
|
|
3465
3659
|
}
|
|
3466
|
-
) : /* @__PURE__ */ (0,
|
|
3660
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "matchid-login-recommend-list", children: [
|
|
3467
3661
|
installedWallets.map((wallet2) => {
|
|
3468
|
-
return /* @__PURE__ */ (0,
|
|
3662
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3469
3663
|
RecommendItem,
|
|
3470
3664
|
{
|
|
3471
3665
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -3478,14 +3672,14 @@ function TRONModal({
|
|
|
3478
3672
|
);
|
|
3479
3673
|
}),
|
|
3480
3674
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
3481
|
-
return /* @__PURE__ */ (0,
|
|
3675
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3482
3676
|
RecommendItem,
|
|
3483
3677
|
{
|
|
3484
3678
|
icon: iconMaps[wallet2.walletKey],
|
|
3485
3679
|
name: wallet2.name,
|
|
3486
3680
|
onClick: () => {
|
|
3487
3681
|
},
|
|
3488
|
-
footer: /* @__PURE__ */ (0,
|
|
3682
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Button, { size: "sm", onClick: () => {
|
|
3489
3683
|
window.open(wallet2.website);
|
|
3490
3684
|
}, children: "Install" })
|
|
3491
3685
|
},
|
|
@@ -3496,24 +3690,24 @@ function TRONModal({
|
|
|
3496
3690
|
}
|
|
3497
3691
|
|
|
3498
3692
|
// src/components/TONModal/index.tsx
|
|
3499
|
-
var
|
|
3693
|
+
var import_react28 = __toESM(require("react"));
|
|
3500
3694
|
var import_react_intl15 = require("react-intl");
|
|
3501
3695
|
var import_ui_react = require("@tonconnect/ui-react");
|
|
3502
|
-
var
|
|
3696
|
+
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
3503
3697
|
function WalletContent2({
|
|
3504
3698
|
onSuccess,
|
|
3505
3699
|
type
|
|
3506
3700
|
}) {
|
|
3507
3701
|
const { events, login } = useMatch();
|
|
3508
|
-
const [connected, setConnected] = (0,
|
|
3702
|
+
const [connected, setConnected] = (0, import_react28.useState)(false);
|
|
3509
3703
|
const wallet = (0, import_ui_react.useTonWallet)();
|
|
3510
3704
|
const userFriendlyAddress = (0, import_ui_react.useTonAddress)();
|
|
3511
3705
|
const [tonConnectUI] = (0, import_ui_react.useTonConnectUI)();
|
|
3512
3706
|
const { state, open, close } = (0, import_ui_react.useTonConnectModal)();
|
|
3513
|
-
const [status, setStatus] = (0,
|
|
3514
|
-
const statusRef =
|
|
3515
|
-
const [error, setError] = (0,
|
|
3516
|
-
(0,
|
|
3707
|
+
const [status, setStatus] = (0, import_react28.useState)("");
|
|
3708
|
+
const statusRef = import_react28.default.useRef(status);
|
|
3709
|
+
const [error, setError] = (0, import_react28.useState)("");
|
|
3710
|
+
(0, import_react28.useEffect)(() => {
|
|
3517
3711
|
const init = async () => {
|
|
3518
3712
|
if (wallet) {
|
|
3519
3713
|
await tonConnectUI.disconnect();
|
|
@@ -3586,7 +3780,7 @@ function WalletContent2({
|
|
|
3586
3780
|
}
|
|
3587
3781
|
});
|
|
3588
3782
|
}, []);
|
|
3589
|
-
(0,
|
|
3783
|
+
(0, import_react28.useEffect)(() => {
|
|
3590
3784
|
if (wallet) {
|
|
3591
3785
|
setConnected(true);
|
|
3592
3786
|
console.log("Wallet connected:", wallet);
|
|
@@ -3597,7 +3791,7 @@ function WalletContent2({
|
|
|
3597
3791
|
setStatus("");
|
|
3598
3792
|
}
|
|
3599
3793
|
}, [wallet]);
|
|
3600
|
-
(0,
|
|
3794
|
+
(0, import_react28.useEffect)(() => {
|
|
3601
3795
|
console.log({
|
|
3602
3796
|
state,
|
|
3603
3797
|
wallet
|
|
@@ -3626,7 +3820,7 @@ function WalletContent2({
|
|
|
3626
3820
|
}
|
|
3627
3821
|
}
|
|
3628
3822
|
}, [state]);
|
|
3629
|
-
return /* @__PURE__ */ (0,
|
|
3823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
3630
3824
|
WalletModalContent,
|
|
3631
3825
|
{
|
|
3632
3826
|
connected,
|
|
@@ -3660,21 +3854,21 @@ function TONModal({
|
|
|
3660
3854
|
const intl = (0, import_react_intl15.useIntl)();
|
|
3661
3855
|
const { endpoints, appid } = useLocalStore_default();
|
|
3662
3856
|
const manifestUrl = `${endpoints.back}api/v1/wallet/ton?appid=${appid}&url=` + encodeURIComponent(window.location.origin);
|
|
3663
|
-
return /* @__PURE__ */ (0,
|
|
3857
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3664
3858
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3665
3859
|
}, {
|
|
3666
3860
|
name: "TON"
|
|
3667
|
-
}), children: /* @__PURE__ */ (0,
|
|
3861
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
3668
3862
|
import_ui_react.TonConnectUIProvider,
|
|
3669
3863
|
{
|
|
3670
3864
|
manifestUrl,
|
|
3671
|
-
children: /* @__PURE__ */ (0,
|
|
3865
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(WalletContent2, { onSuccess, type })
|
|
3672
3866
|
}
|
|
3673
3867
|
) });
|
|
3674
3868
|
}
|
|
3675
3869
|
|
|
3676
3870
|
// src/components/BTCModal/index.tsx
|
|
3677
|
-
var
|
|
3871
|
+
var import_react30 = __toESM(require("react"));
|
|
3678
3872
|
var import_react_intl16 = require("react-intl");
|
|
3679
3873
|
|
|
3680
3874
|
// src/lib/btc/UnisatAdapter.ts
|
|
@@ -3746,7 +3940,7 @@ var XverseAdapter = class {
|
|
|
3746
3940
|
}
|
|
3747
3941
|
});
|
|
3748
3942
|
} catch (err) {
|
|
3749
|
-
|
|
3943
|
+
matchlog_default.error(err);
|
|
3750
3944
|
resolve(false);
|
|
3751
3945
|
}
|
|
3752
3946
|
});
|
|
@@ -3823,12 +4017,12 @@ var LeatherAdapter = class {
|
|
|
3823
4017
|
};
|
|
3824
4018
|
|
|
3825
4019
|
// src/hooks/useBTCWallet.ts
|
|
3826
|
-
var
|
|
4020
|
+
var import_react29 = require("react");
|
|
3827
4021
|
var useBTCWallet = () => {
|
|
3828
4022
|
const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
|
|
3829
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
3830
|
-
const [address, setAddress] = (0,
|
|
3831
|
-
(0,
|
|
4023
|
+
const [installedWallets, setInstalledWallets] = (0, import_react29.useState)([]);
|
|
4024
|
+
const [address, setAddress] = (0, import_react29.useState)(null);
|
|
4025
|
+
(0, import_react29.useEffect)(() => {
|
|
3832
4026
|
const getInstalled = async () => {
|
|
3833
4027
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
3834
4028
|
wallet: wallet2,
|
|
@@ -3838,11 +4032,11 @@ var useBTCWallet = () => {
|
|
|
3838
4032
|
};
|
|
3839
4033
|
getInstalled();
|
|
3840
4034
|
}, []);
|
|
3841
|
-
const [wallet, chooseWallet] = (0,
|
|
4035
|
+
const [wallet, chooseWallet] = (0, import_react29.useState)(null);
|
|
3842
4036
|
const onConnect = async () => {
|
|
3843
4037
|
setAddress(await wallet.connect());
|
|
3844
4038
|
};
|
|
3845
|
-
(0,
|
|
4039
|
+
(0, import_react29.useEffect)(() => {
|
|
3846
4040
|
if (!wallet) {
|
|
3847
4041
|
setAddress(null);
|
|
3848
4042
|
}
|
|
@@ -3858,7 +4052,7 @@ var useBTCWallet = () => {
|
|
|
3858
4052
|
};
|
|
3859
4053
|
|
|
3860
4054
|
// src/components/BTCModal/index.tsx
|
|
3861
|
-
var
|
|
4055
|
+
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
3862
4056
|
function BTCModal({
|
|
3863
4057
|
type = "login",
|
|
3864
4058
|
onSuccess,
|
|
@@ -3868,15 +4062,15 @@ function BTCModal({
|
|
|
3868
4062
|
const intl = (0, import_react_intl16.useIntl)();
|
|
3869
4063
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useBTCWallet();
|
|
3870
4064
|
const iconMaps = {
|
|
3871
|
-
leather: /* @__PURE__ */ (0,
|
|
3872
|
-
unisat: /* @__PURE__ */ (0,
|
|
3873
|
-
xverse: /* @__PURE__ */ (0,
|
|
4065
|
+
leather: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(LeatherIcon, { size: isDownMd ? 36 : 40 }),
|
|
4066
|
+
unisat: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(UnisatIcon, { size: isDownMd ? 36 : 40 }),
|
|
4067
|
+
xverse: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(XverseIcon, { size: isDownMd ? 36 : 40 })
|
|
3874
4068
|
};
|
|
3875
4069
|
const { events, login } = useMatch();
|
|
3876
|
-
const [status, setStatus] = (0,
|
|
3877
|
-
const statusRef =
|
|
3878
|
-
const [error, setError] = (0,
|
|
3879
|
-
const connected = (0,
|
|
4070
|
+
const [status, setStatus] = (0, import_react30.useState)("");
|
|
4071
|
+
const statusRef = import_react30.default.useRef(status);
|
|
4072
|
+
const [error, setError] = (0, import_react30.useState)("");
|
|
4073
|
+
const connected = (0, import_react30.useMemo)(() => {
|
|
3880
4074
|
return !!address;
|
|
3881
4075
|
}, [address]);
|
|
3882
4076
|
const disconnect = async () => {
|
|
@@ -3940,7 +4134,7 @@ function BTCModal({
|
|
|
3940
4134
|
statusRef.current = "";
|
|
3941
4135
|
}
|
|
3942
4136
|
};
|
|
3943
|
-
(0,
|
|
4137
|
+
(0, import_react30.useEffect)(() => {
|
|
3944
4138
|
if (wallet) {
|
|
3945
4139
|
console.log("onConnect");
|
|
3946
4140
|
try {
|
|
@@ -3953,12 +4147,12 @@ function BTCModal({
|
|
|
3953
4147
|
setStatus("");
|
|
3954
4148
|
}
|
|
3955
4149
|
}, [wallet]);
|
|
3956
|
-
(0,
|
|
4150
|
+
(0, import_react30.useEffect)(() => {
|
|
3957
4151
|
if (address) {
|
|
3958
4152
|
toLoginInWallet();
|
|
3959
4153
|
}
|
|
3960
4154
|
}, [address]);
|
|
3961
|
-
(0,
|
|
4155
|
+
(0, import_react30.useEffect)(() => {
|
|
3962
4156
|
if (!props.isOpen) {
|
|
3963
4157
|
disconnect();
|
|
3964
4158
|
}
|
|
@@ -3970,11 +4164,11 @@ function BTCModal({
|
|
|
3970
4164
|
statusRef.current = "";
|
|
3971
4165
|
setError("");
|
|
3972
4166
|
};
|
|
3973
|
-
return /* @__PURE__ */ (0,
|
|
4167
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3974
4168
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3975
4169
|
}, {
|
|
3976
4170
|
name: "BTC"
|
|
3977
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
4171
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
3978
4172
|
WalletModalContent,
|
|
3979
4173
|
{
|
|
3980
4174
|
error,
|
|
@@ -3987,9 +4181,9 @@ function BTCModal({
|
|
|
3987
4181
|
setVisible: () => {
|
|
3988
4182
|
}
|
|
3989
4183
|
}
|
|
3990
|
-
) : /* @__PURE__ */ (0,
|
|
4184
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "matchid-login-recommend-list", children: [
|
|
3991
4185
|
installedWallets.map((wallet2) => {
|
|
3992
|
-
return /* @__PURE__ */ (0,
|
|
4186
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
3993
4187
|
RecommendItem,
|
|
3994
4188
|
{
|
|
3995
4189
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -4002,14 +4196,14 @@ function BTCModal({
|
|
|
4002
4196
|
);
|
|
4003
4197
|
}),
|
|
4004
4198
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
4005
|
-
return /* @__PURE__ */ (0,
|
|
4199
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
4006
4200
|
RecommendItem,
|
|
4007
4201
|
{
|
|
4008
4202
|
icon: iconMaps[wallet2.walletKey],
|
|
4009
4203
|
name: wallet2.name,
|
|
4010
4204
|
onClick: () => {
|
|
4011
4205
|
},
|
|
4012
|
-
footer: /* @__PURE__ */ (0,
|
|
4206
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Button, { size: "sm", onClick: () => {
|
|
4013
4207
|
window.open(wallet2.website);
|
|
4014
4208
|
}, children: "Install" })
|
|
4015
4209
|
},
|
|
@@ -4031,6 +4225,7 @@ function BTCModal({
|
|
|
4031
4225
|
LoginPanel,
|
|
4032
4226
|
Modal,
|
|
4033
4227
|
ModalWithHeader,
|
|
4228
|
+
Overlay,
|
|
4034
4229
|
PasswordModal,
|
|
4035
4230
|
Popover,
|
|
4036
4231
|
SOLModal,
|