@matchain/matchid-sdk-react 0.1.42-alpha.16 → 0.1.42-alpha.2
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-WCS3X2LC.mjs → chunk-2YN5Y3SM.mjs} +2 -2
- package/dist/chunk-PZPEWHBV.mjs +4251 -0
- package/dist/chunk-PZPEWHBV.mjs.map +1 -0
- package/dist/components/index.d.mts +2 -3
- package/dist/components/index.d.ts +2 -3
- package/dist/components/index.js +486 -770
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +3 -8
- package/dist/hooks/api/index.d.mts +2 -2
- package/dist/hooks/api/index.d.ts +2 -2
- package/dist/hooks/api/index.js +78 -137
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +2 -3
- package/dist/hooks/index.d.mts +2 -5
- package/dist/hooks/index.d.ts +2 -5
- package/dist/hooks/index.js +158 -362
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +1 -2
- package/dist/index-B4YpKSY3.d.ts +94 -0
- package/dist/{index-CLvQH5gM.d.ts → index-CxY3u9Rv.d.ts} +12 -32
- package/dist/{index-DlhAHm_s.d.mts → index-DCReY5T2.d.mts} +12 -32
- package/dist/{index-Ca9nh_8s.d.ts → index-DbjibQ5d.d.mts} +1 -1
- package/dist/{index-DFZpfAfc.d.mts → index-GcpJCj6O.d.ts} +1 -1
- package/dist/index-_k6h9w0P.d.mts +94 -0
- package/dist/index.css +4 -84
- package/dist/index.d.mts +5 -9
- package/dist/index.d.ts +5 -9
- package/dist/index.js +669 -1183
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -6
- package/dist/types.d-DwF-Pkvh.d.mts +179 -0
- package/dist/types.d-DwF-Pkvh.d.ts +179 -0
- package/example/package.json +0 -1
- package/example/src/App.tsx +28 -54
- package/example/src/components/Login/index.tsx +2 -2
- package/example/src/components/RoutePrivate/index.tsx +3 -4
- package/example/src/config/index.ts +2 -7
- package/example/src/pages/{User/index.tsx → User.tsx} +84 -55
- package/example/src/pages/Wallet.tsx +43 -258
- package/example/tsconfig.json +0 -1
- package/package.json +2 -7
- package/dist/chunk-SQIJR7RA.mjs +0 -29
- package/dist/chunk-SQIJR7RA.mjs.map +0 -1
- package/dist/chunk-UCIEZ3XI.mjs +0 -4747
- package/dist/chunk-UCIEZ3XI.mjs.map +0 -1
- package/dist/index-Bluim2ZP.d.mts +0 -143
- package/dist/index-BxS06a5O.d.ts +0 -50
- package/dist/index-EqksEEto.d.ts +0 -143
- package/dist/index-q5XDobUF.d.mts +0 -50
- package/dist/mpc-CTbBWHld.d.mts +0 -20
- package/dist/mpc-CTbBWHld.d.ts +0 -20
- package/dist/types/index.d.mts +0 -3
- package/dist/types/index.d.ts +0 -3
- package/dist/types/index.js +0 -44
- package/dist/types/index.js.map +0 -1
- package/dist/types/index.mjs +0 -10
- package/dist/types/index.mjs.map +0 -1
- package/dist/types-CVwZEgQ0.d.mts +0 -244
- package/dist/types-CVwZEgQ0.d.ts +0 -244
- package/example/src/abi/erc20.json +0 -222
- package/example/src/components/ButtonGroup/index.tsx +0 -10
- package/example/src/config/chains/index.ts +0 -2
- package/example/src/config/chains/matchMain.ts +0 -27
- package/example/src/config/chains/matchTest.ts +0 -33
- package/example/src/pages/User/components/BindListModal.tsx +0 -10
- package/example/src/pages/User/components/PohListModal.tsx +0 -10
- package/example/src/pages/User/components/QueryDisplay.tsx +0 -25
- package/example/src/store/useLocalStore.ts +0 -51
- /package/dist/{chunk-WCS3X2LC.mjs.map → chunk-2YN5Y3SM.mjs.map} +0 -0
package/dist/components/index.js
CHANGED
|
@@ -41,19 +41,17 @@ __export(components_exports, {
|
|
|
41
41
|
LoginPanel: () => LoginPanel,
|
|
42
42
|
Modal: () => Modal,
|
|
43
43
|
ModalWithHeader: () => ModalWithHeader,
|
|
44
|
-
Overlay: () => Overlay,
|
|
45
44
|
PasswordModal: () => PasswordModal,
|
|
46
45
|
Popover: () => Popover,
|
|
47
46
|
SOLModal: () => SOLModal,
|
|
48
47
|
TONModal: () => TONModal,
|
|
49
48
|
TRONModal: () => TRONModal,
|
|
50
|
-
UsernameModal: () => UsernameModal
|
|
51
|
-
WalletModal: () => WalletModal
|
|
49
|
+
UsernameModal: () => UsernameModal
|
|
52
50
|
});
|
|
53
51
|
module.exports = __toCommonJS(components_exports);
|
|
54
52
|
|
|
55
53
|
// src/components/EmailModal/index.tsx
|
|
56
|
-
var
|
|
54
|
+
var import_react15 = require("react");
|
|
57
55
|
|
|
58
56
|
// src/assets/icon/ArrowLeftIcon.tsx
|
|
59
57
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1125,24 +1123,15 @@ function useDownMd() {
|
|
|
1125
1123
|
return isBelowMd;
|
|
1126
1124
|
}
|
|
1127
1125
|
|
|
1128
|
-
// src/components/
|
|
1129
|
-
var import_react2 = require("react");
|
|
1126
|
+
// src/components/Modal/index.tsx
|
|
1130
1127
|
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
1131
|
-
function
|
|
1132
|
-
isOpen = false,
|
|
1128
|
+
function Modal({
|
|
1133
1129
|
children,
|
|
1134
|
-
|
|
1130
|
+
isOpen,
|
|
1131
|
+
width = 480,
|
|
1132
|
+
zIndex = 100,
|
|
1133
|
+
className = ""
|
|
1135
1134
|
}) {
|
|
1136
|
-
(0, import_react2.useEffect)(() => {
|
|
1137
|
-
if (isOpen) {
|
|
1138
|
-
document.body.style.overflow = "hidden";
|
|
1139
|
-
} else {
|
|
1140
|
-
document.body.style.overflow = "";
|
|
1141
|
-
}
|
|
1142
|
-
return () => {
|
|
1143
|
-
document.body.style.overflow = "";
|
|
1144
|
-
};
|
|
1145
|
-
}, [isOpen]);
|
|
1146
1135
|
return isOpen ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
1147
1136
|
"div",
|
|
1148
1137
|
{
|
|
@@ -1150,27 +1139,15 @@ function Overlay({
|
|
|
1150
1139
|
style: {
|
|
1151
1140
|
zIndex
|
|
1152
1141
|
},
|
|
1153
|
-
children
|
|
1142
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: `matchid-modal ${className}`, style: {
|
|
1143
|
+
width
|
|
1144
|
+
}, children: [
|
|
1145
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "matchid-modal-mobile-header" }),
|
|
1146
|
+
children
|
|
1147
|
+
] })
|
|
1154
1148
|
}
|
|
1155
1149
|
) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, {});
|
|
1156
1150
|
}
|
|
1157
|
-
|
|
1158
|
-
// src/components/Modal/index.tsx
|
|
1159
|
-
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
1160
|
-
function Modal({
|
|
1161
|
-
children,
|
|
1162
|
-
isOpen,
|
|
1163
|
-
width = 480,
|
|
1164
|
-
zIndex = 100,
|
|
1165
|
-
className = ""
|
|
1166
|
-
}) {
|
|
1167
|
-
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Overlay, { isOpen, zIndex, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: `matchid-modal ${className}`, style: {
|
|
1168
|
-
width
|
|
1169
|
-
}, children: [
|
|
1170
|
-
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "matchid-modal-mobile-header" }),
|
|
1171
|
-
children
|
|
1172
|
-
] }) });
|
|
1173
|
-
}
|
|
1174
1151
|
function ModalWithHeader({
|
|
1175
1152
|
children,
|
|
1176
1153
|
onBack,
|
|
@@ -1181,24 +1158,24 @@ function ModalWithHeader({
|
|
|
1181
1158
|
...props
|
|
1182
1159
|
}) {
|
|
1183
1160
|
const isDownMd = useDownMd();
|
|
1184
|
-
return /* @__PURE__ */ (0,
|
|
1185
|
-
/* @__PURE__ */ (0,
|
|
1186
|
-
/* @__PURE__ */ (0,
|
|
1187
|
-
onBack && /* @__PURE__ */ (0,
|
|
1188
|
-
/* @__PURE__ */ (0,
|
|
1161
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Modal, { ...props, children: [
|
|
1162
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: `matchid-modal-header ${showBorder ? "matchid-modal-header-border" : ""}`, children: [
|
|
1163
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "matchid-modal-header-content", children: [
|
|
1164
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ArrowLeftIcon, { height: isDownMd ? 20 : 25, width: isDownMd ? 20 : 24, className: "matchid-modal-header-back", onClick: onBack }),
|
|
1165
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "matchid-modal-header-title", children: title })
|
|
1189
1166
|
] }),
|
|
1190
|
-
onClose && /* @__PURE__ */ (0,
|
|
1167
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(CloseRoundIcon, { size: isDownMd ? 24 : 30, className: "matchid-modal-header-close", onClick: onClose })
|
|
1191
1168
|
] }),
|
|
1192
1169
|
children
|
|
1193
1170
|
] });
|
|
1194
1171
|
}
|
|
1195
1172
|
|
|
1196
1173
|
// src/components/EmailModal/StepEmail.tsx
|
|
1197
|
-
var
|
|
1174
|
+
var import_react3 = require("react");
|
|
1198
1175
|
|
|
1199
1176
|
// src/utils/index.ts
|
|
1200
1177
|
var getVersion = () => {
|
|
1201
|
-
return "0.0.
|
|
1178
|
+
return "0.0.1";
|
|
1202
1179
|
};
|
|
1203
1180
|
function encodeBase64(input) {
|
|
1204
1181
|
return btoa(unescape(encodeURIComponent(input)));
|
|
@@ -1222,7 +1199,7 @@ function getAppClientId() {
|
|
|
1222
1199
|
}
|
|
1223
1200
|
|
|
1224
1201
|
// src/components/Button/index.tsx
|
|
1225
|
-
var
|
|
1202
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
1226
1203
|
function Button({
|
|
1227
1204
|
size = "df",
|
|
1228
1205
|
disabled = false,
|
|
@@ -1241,7 +1218,7 @@ function Button({
|
|
|
1241
1218
|
onClick && onClick();
|
|
1242
1219
|
}
|
|
1243
1220
|
};
|
|
1244
|
-
return /* @__PURE__ */ (0,
|
|
1221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
1245
1222
|
"button",
|
|
1246
1223
|
{
|
|
1247
1224
|
type,
|
|
@@ -1251,14 +1228,14 @@ function Button({
|
|
|
1251
1228
|
...style
|
|
1252
1229
|
},
|
|
1253
1230
|
onClick: onAction,
|
|
1254
|
-
children: loading ? /* @__PURE__ */ (0,
|
|
1231
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(LoadingIcon_default, { className: "matchid-btn-loading-icon", color: "var(--matchid-btn-loading-color)" }) : children
|
|
1255
1232
|
}
|
|
1256
1233
|
);
|
|
1257
1234
|
}
|
|
1258
1235
|
|
|
1259
1236
|
// src/components/Input/index.tsx
|
|
1260
|
-
var
|
|
1261
|
-
var
|
|
1237
|
+
var import_react2 = require("react");
|
|
1238
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
1262
1239
|
function Input({
|
|
1263
1240
|
onChange,
|
|
1264
1241
|
type,
|
|
@@ -1266,19 +1243,19 @@ function Input({
|
|
|
1266
1243
|
className = "",
|
|
1267
1244
|
...props
|
|
1268
1245
|
}) {
|
|
1269
|
-
const [inputType, setInputType] = (0,
|
|
1246
|
+
const [inputType, setInputType] = (0, import_react2.useState)(type);
|
|
1270
1247
|
const isDownMd = useDownMd();
|
|
1271
|
-
return /* @__PURE__ */ (0,
|
|
1248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
1272
1249
|
"div",
|
|
1273
1250
|
{
|
|
1274
1251
|
className: `matchid-input-box ${props.value && props.value.length > 0 ? "matchid-input-has-content" : ""} ${className}`,
|
|
1275
1252
|
children: [
|
|
1276
|
-
/* @__PURE__ */ (0,
|
|
1277
|
-
props.value && props.value.length > 0 && /* @__PURE__ */ (0,
|
|
1253
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("input", { type: inputType, onChange, ...props, className: "matchid-input-field" }),
|
|
1254
|
+
props.value && props.value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "matchid-input-delete-icon", onClick: (e) => {
|
|
1278
1255
|
if (onChange) {
|
|
1279
1256
|
onChange({ target: { value: "" } });
|
|
1280
1257
|
}
|
|
1281
|
-
}, children: /* @__PURE__ */ (0,
|
|
1258
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
1282
1259
|
DeleteRoundIcon,
|
|
1283
1260
|
{
|
|
1284
1261
|
height: isDownMd ? 16 : 21,
|
|
@@ -1286,9 +1263,9 @@ function Input({
|
|
|
1286
1263
|
color: "var(--matchid-input-delete-icon-color)"
|
|
1287
1264
|
}
|
|
1288
1265
|
) }),
|
|
1289
|
-
type === "password" && /* @__PURE__ */ (0,
|
|
1266
|
+
type === "password" && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "matchid-input-eye-icon", onClick: () => {
|
|
1290
1267
|
setInputType(inputType === "password" ? "text" : "password");
|
|
1291
|
-
}, children: inputType === "password" ? /* @__PURE__ */ (0,
|
|
1268
|
+
}, children: inputType === "password" ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(CloseEyeIcon, { size: isDownMd ? 16 : 20 }) : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(OpenEyeIcon, { size: isDownMd ? 16 : 20 }) }),
|
|
1292
1269
|
after
|
|
1293
1270
|
]
|
|
1294
1271
|
}
|
|
@@ -1296,7 +1273,7 @@ function Input({
|
|
|
1296
1273
|
}
|
|
1297
1274
|
|
|
1298
1275
|
// src/components/Field/index.tsx
|
|
1299
|
-
var
|
|
1276
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
1300
1277
|
function Field({
|
|
1301
1278
|
label,
|
|
1302
1279
|
children,
|
|
@@ -1304,37 +1281,37 @@ function Field({
|
|
|
1304
1281
|
required,
|
|
1305
1282
|
className = ""
|
|
1306
1283
|
}) {
|
|
1307
|
-
return /* @__PURE__ */ (0,
|
|
1308
|
-
/* @__PURE__ */ (0,
|
|
1309
|
-
required && /* @__PURE__ */ (0,
|
|
1284
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: `matchid-field-box ${className}`, children: [
|
|
1285
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "matchid-field-label", children: [
|
|
1286
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "matchid-field-required", children: "*" }),
|
|
1310
1287
|
label
|
|
1311
1288
|
] }),
|
|
1312
1289
|
children,
|
|
1313
|
-
error && /* @__PURE__ */ (0,
|
|
1290
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-field-error", children: error })
|
|
1314
1291
|
] });
|
|
1315
1292
|
}
|
|
1316
1293
|
|
|
1317
1294
|
// src/components/EmailModal/StepEmail.tsx
|
|
1318
1295
|
var import_react_intl = require("react-intl");
|
|
1319
|
-
var
|
|
1296
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
1320
1297
|
function StepEmail(props) {
|
|
1321
1298
|
const intl = (0, import_react_intl.useIntl)();
|
|
1322
|
-
const [emailVal, setEmailVal] = (0,
|
|
1323
|
-
(0,
|
|
1299
|
+
const [emailVal, setEmailVal] = (0, import_react3.useState)("");
|
|
1300
|
+
(0, import_react3.useEffect)(() => {
|
|
1324
1301
|
if (props.email) {
|
|
1325
1302
|
setEmailVal(props.email);
|
|
1326
1303
|
}
|
|
1327
1304
|
}, []);
|
|
1328
|
-
const canContinue = (0,
|
|
1305
|
+
const canContinue = (0, import_react3.useMemo)(() => {
|
|
1329
1306
|
return isValidEmail(emailVal);
|
|
1330
1307
|
}, [emailVal]);
|
|
1331
1308
|
const onContinue = async () => {
|
|
1332
1309
|
props.onContinue(emailVal);
|
|
1333
1310
|
};
|
|
1334
|
-
return /* @__PURE__ */ (0,
|
|
1335
|
-
/* @__PURE__ */ (0,
|
|
1311
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: "matchid-email-email-box", children: [
|
|
1312
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Field, { label: intl.formatMessage({
|
|
1336
1313
|
id: "emailAddress"
|
|
1337
|
-
}), children: /* @__PURE__ */ (0,
|
|
1314
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
1338
1315
|
Input,
|
|
1339
1316
|
{
|
|
1340
1317
|
placeholder: intl.formatMessage({
|
|
@@ -1344,9 +1321,9 @@ function StepEmail(props) {
|
|
|
1344
1321
|
value: emailVal
|
|
1345
1322
|
}
|
|
1346
1323
|
) }),
|
|
1347
|
-
/* @__PURE__ */ (0,
|
|
1324
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Button, { disabled: !canContinue, style: {
|
|
1348
1325
|
marginTop: "64px"
|
|
1349
|
-
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
1326
|
+
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react_intl.FormattedMessage, { id: "continue" }) })
|
|
1350
1327
|
] });
|
|
1351
1328
|
}
|
|
1352
1329
|
|
|
@@ -1394,7 +1371,7 @@ var localStore = useLocalStore;
|
|
|
1394
1371
|
var useLocalStore_default = useLocalStore;
|
|
1395
1372
|
|
|
1396
1373
|
// src/hooks/useUserInfo.tsx
|
|
1397
|
-
var
|
|
1374
|
+
var import_react13 = require("react");
|
|
1398
1375
|
|
|
1399
1376
|
// src/api/request.ts
|
|
1400
1377
|
var import_axios = __toESM(require("axios"));
|
|
@@ -1603,16 +1580,16 @@ var toBindWalletApi = ({
|
|
|
1603
1580
|
};
|
|
1604
1581
|
|
|
1605
1582
|
// src/MatchContext.tsx
|
|
1606
|
-
var
|
|
1583
|
+
var import_react12 = require("react");
|
|
1607
1584
|
|
|
1608
1585
|
// src/context/BusinessProvider.tsx
|
|
1609
|
-
var
|
|
1586
|
+
var import_react9 = require("react");
|
|
1610
1587
|
|
|
1611
1588
|
// src/components/PasswordModal/index.tsx
|
|
1612
|
-
var
|
|
1589
|
+
var import_react6 = require("react");
|
|
1613
1590
|
|
|
1614
1591
|
// src/hooks/useMatchEvents.ts
|
|
1615
|
-
var
|
|
1592
|
+
var import_react4 = require("react");
|
|
1616
1593
|
|
|
1617
1594
|
// src/hooks/eventManager.ts
|
|
1618
1595
|
var EventManager = class {
|
|
@@ -1642,14 +1619,11 @@ var EventManager = class {
|
|
|
1642
1619
|
var eventManager = new EventManager();
|
|
1643
1620
|
var eventManager_default = eventManager;
|
|
1644
1621
|
|
|
1645
|
-
// src/hooks/useWallet.tsx
|
|
1646
|
-
var import_viem = require("viem");
|
|
1647
|
-
|
|
1648
1622
|
// src/store/useStore.ts
|
|
1649
1623
|
var import_zustand2 = require("zustand");
|
|
1650
1624
|
var useStore = (0, import_zustand2.create)((set) => ({
|
|
1651
|
-
|
|
1652
|
-
|
|
1625
|
+
walletIframeInited: false,
|
|
1626
|
+
setWalletIframeInited: (inited) => set({ walletIframeInited: inited }),
|
|
1653
1627
|
recoveryModal: {
|
|
1654
1628
|
open: false,
|
|
1655
1629
|
success: async () => {
|
|
@@ -1664,396 +1638,149 @@ var useStore_default = useStore;
|
|
|
1664
1638
|
|
|
1665
1639
|
// src/hooks/useWallet.tsx
|
|
1666
1640
|
var import_accounts = require("viem/accounts");
|
|
1667
|
-
var import_viem2 = require("viem");
|
|
1668
|
-
var import_react6 = require("react");
|
|
1669
|
-
var import_viem3 = require("viem");
|
|
1670
|
-
|
|
1671
|
-
// src/store/useModalStore.ts
|
|
1672
|
-
var import_zustand3 = require("zustand");
|
|
1673
|
-
|
|
1674
|
-
// src/hooks/useConfig.tsx
|
|
1675
|
-
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
1676
|
-
var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
1677
|
-
function useWalletConfig() {
|
|
1678
|
-
const isDownMd = useDownMd();
|
|
1679
|
-
const walletMap = {
|
|
1680
|
-
evm: {
|
|
1681
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1682
|
-
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1683
|
-
name: "EVM",
|
|
1684
|
-
method: "evm"
|
|
1685
|
-
},
|
|
1686
|
-
sol: {
|
|
1687
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1688
|
-
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1689
|
-
name: "SOL",
|
|
1690
|
-
method: "sol"
|
|
1691
|
-
},
|
|
1692
|
-
btc: {
|
|
1693
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1694
|
-
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1695
|
-
name: "BTC",
|
|
1696
|
-
method: "btc"
|
|
1697
|
-
},
|
|
1698
|
-
tron: {
|
|
1699
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1700
|
-
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1701
|
-
name: "TRON",
|
|
1702
|
-
method: "tron"
|
|
1703
|
-
},
|
|
1704
|
-
ton: {
|
|
1705
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1706
|
-
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
1707
|
-
name: "TON",
|
|
1708
|
-
method: "ton"
|
|
1709
|
-
}
|
|
1710
|
-
};
|
|
1711
|
-
return {
|
|
1712
|
-
walletMap
|
|
1713
|
-
};
|
|
1714
|
-
}
|
|
1715
|
-
|
|
1716
|
-
// src/store/useModalStore.ts
|
|
1717
|
-
var useSOLModalStore = (0, import_zustand3.create)((set) => ({
|
|
1718
|
-
isOpen: false,
|
|
1719
|
-
type: "",
|
|
1720
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1721
|
-
close: () => set({ isOpen: false })
|
|
1722
|
-
}));
|
|
1723
|
-
var useTRONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1724
|
-
isOpen: false,
|
|
1725
|
-
type: "",
|
|
1726
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1727
|
-
close: () => set({ isOpen: false })
|
|
1728
|
-
}));
|
|
1729
|
-
var useTONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1730
|
-
isOpen: false,
|
|
1731
|
-
type: "",
|
|
1732
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1733
|
-
close: () => set({ isOpen: false })
|
|
1734
|
-
}));
|
|
1735
|
-
var useBTCModalStore = (0, import_zustand3.create)((set) => ({
|
|
1736
|
-
isOpen: false,
|
|
1737
|
-
type: "",
|
|
1738
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1739
|
-
close: () => set({ isOpen: false })
|
|
1740
|
-
}));
|
|
1741
|
-
var useCEXBindModalStore = (0, import_zustand3.create)((set) => ({
|
|
1742
|
-
type: "",
|
|
1743
|
-
isOpen: false,
|
|
1744
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1745
|
-
close: () => set({ isOpen: false })
|
|
1746
|
-
}));
|
|
1747
|
-
var useHashPanelStore = (0, import_zustand3.create)((set) => ({
|
|
1748
|
-
isOpen: false,
|
|
1749
|
-
hash: null,
|
|
1750
|
-
chain: null,
|
|
1751
|
-
open: (params) => set({
|
|
1752
|
-
isOpen: true,
|
|
1753
|
-
hash: params?.hash || null,
|
|
1754
|
-
chain: params?.chain || null
|
|
1755
|
-
}),
|
|
1756
|
-
close: () => set({ isOpen: false })
|
|
1757
|
-
}));
|
|
1758
|
-
var useWalletModalStore = (0, import_zustand3.create)((set) => ({
|
|
1759
|
-
isOpen: false,
|
|
1760
|
-
type: "",
|
|
1761
|
-
methods: [],
|
|
1762
|
-
open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
|
|
1763
|
-
close: () => set({ isOpen: false })
|
|
1764
|
-
}));
|
|
1765
|
-
|
|
1766
|
-
// src/hooks/useWallet.tsx
|
|
1767
1641
|
var AppClientId = "react-sdk-" + getVersion();
|
|
1768
1642
|
function useWallet() {
|
|
1769
1643
|
const { appid, token, overview, address, wallet: walletConfig } = useLocalStore_default();
|
|
1770
|
-
const { setRecoveryModal, closeRecoveryModal
|
|
1771
|
-
const
|
|
1772
|
-
const initCore = ({
|
|
1644
|
+
const { setRecoveryModal, closeRecoveryModal } = useStore_default();
|
|
1645
|
+
const initWallet = ({
|
|
1773
1646
|
did,
|
|
1774
1647
|
address: address2
|
|
1775
1648
|
}) => {
|
|
1776
|
-
return window.
|
|
1649
|
+
return window.waitMatchUntilWalletMessage(
|
|
1650
|
+
"initCore",
|
|
1777
1651
|
{
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
AccessToken: token,
|
|
1784
|
-
Address: address2
|
|
1785
|
-
}
|
|
1652
|
+
AppId: appid,
|
|
1653
|
+
AppClientId,
|
|
1654
|
+
UserId: did,
|
|
1655
|
+
AccessToken: token,
|
|
1656
|
+
Address: address2
|
|
1786
1657
|
}
|
|
1787
1658
|
);
|
|
1788
1659
|
};
|
|
1789
|
-
const generateEmbeddedWallets = async (data) => {
|
|
1790
|
-
return await window.matchProvider.waitUntilWalletMessage({
|
|
1791
|
-
method: "generateEmbeddedWallets",
|
|
1792
|
-
data
|
|
1793
|
-
});
|
|
1794
|
-
};
|
|
1795
|
-
const recoveryEmbeddedWallets = async (data) => {
|
|
1796
|
-
return await window.matchProvider.waitUntilWalletMessage({
|
|
1797
|
-
method: "recoveryEmbeddedWallets",
|
|
1798
|
-
data
|
|
1799
|
-
});
|
|
1800
|
-
};
|
|
1801
1660
|
const isRecovered = async () => {
|
|
1802
|
-
const res = await window.
|
|
1803
|
-
method: "isRecovered"
|
|
1804
|
-
});
|
|
1661
|
+
const res = await window.waitMatchUntilWalletMessage("isRecovered");
|
|
1805
1662
|
return res.isRecovered;
|
|
1806
1663
|
};
|
|
1807
|
-
const
|
|
1808
|
-
|
|
1809
|
-
|
|
1664
|
+
const generateWallet = async ({
|
|
1665
|
+
did,
|
|
1666
|
+
userPasscode,
|
|
1667
|
+
recoveryType = "user_passcode_recovery_key"
|
|
1810
1668
|
}) => {
|
|
1669
|
+
return await window.waitMatchUntilWalletMessage("generateWallet", {
|
|
1670
|
+
chainType: "ethereum",
|
|
1671
|
+
recoveryType,
|
|
1672
|
+
userPasscode
|
|
1673
|
+
});
|
|
1674
|
+
};
|
|
1675
|
+
const recoverAfter = async (func) => {
|
|
1811
1676
|
return new Promise(async (resolve, reject) => {
|
|
1812
1677
|
const res = await isRecovered();
|
|
1813
|
-
matchlog_default.log("
|
|
1814
|
-
if (res) {
|
|
1815
|
-
await
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1678
|
+
matchlog_default.log("isRecovered", res);
|
|
1679
|
+
if (!res) {
|
|
1680
|
+
await initWallet({
|
|
1681
|
+
address: overview?.address || "",
|
|
1682
|
+
did: overview?.did?.split(":")[2] || ""
|
|
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;
|
|
1830
1697
|
}
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
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);
|
|
1703
|
+
}
|
|
1836
1704
|
});
|
|
1837
1705
|
};
|
|
1838
|
-
const signMessage2 = async ({
|
|
1839
|
-
message,
|
|
1840
|
-
chainType = "ethereum" /* Ethereum */
|
|
1841
|
-
}) => {
|
|
1706
|
+
const signMessage2 = async (message, type) => {
|
|
1842
1707
|
const getSign = async (resolve, reject) => {
|
|
1843
1708
|
try {
|
|
1844
|
-
const recoverRes = await window.
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
message,
|
|
1848
|
-
chainType
|
|
1849
|
-
}
|
|
1709
|
+
const recoverRes = await window.waitMatchUntilWalletMessage("signMessage", {
|
|
1710
|
+
message,
|
|
1711
|
+
chainType: type
|
|
1850
1712
|
});
|
|
1851
|
-
|
|
1713
|
+
closeRecoveryModal();
|
|
1714
|
+
resolve(recoverRes);
|
|
1852
1715
|
} catch (error) {
|
|
1853
1716
|
console.error("qwe-sign-error", error);
|
|
1854
1717
|
reject(error);
|
|
1855
1718
|
}
|
|
1856
1719
|
};
|
|
1857
|
-
return await recoverAfter(
|
|
1858
|
-
handle: getSign,
|
|
1859
|
-
chainType
|
|
1860
|
-
});
|
|
1720
|
+
return await recoverAfter(getSign);
|
|
1861
1721
|
};
|
|
1862
|
-
const signTransaction = async ({
|
|
1863
|
-
transaction,
|
|
1864
|
-
chainType = "ethereum" /* Ethereum */,
|
|
1865
|
-
chain
|
|
1866
|
-
}) => {
|
|
1867
|
-
console.log("qwe-sign-transaction", transaction);
|
|
1722
|
+
const signTransaction = async (transaction, type) => {
|
|
1868
1723
|
const getSign = async (resolve, reject) => {
|
|
1869
1724
|
try {
|
|
1870
|
-
const recoverRes = await window.
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
transaction,
|
|
1874
|
-
chainType,
|
|
1875
|
-
chain
|
|
1876
|
-
}
|
|
1725
|
+
const recoverRes = await window.waitMatchUntilWalletMessage("signTransaction", {
|
|
1726
|
+
transaction,
|
|
1727
|
+
chainType: type
|
|
1877
1728
|
});
|
|
1878
|
-
|
|
1729
|
+
closeRecoveryModal();
|
|
1730
|
+
resolve(recoverRes);
|
|
1879
1731
|
} catch (error) {
|
|
1880
1732
|
console.error("qwe-sign-error", error);
|
|
1881
1733
|
reject(error);
|
|
1882
1734
|
}
|
|
1883
1735
|
};
|
|
1884
|
-
return await recoverAfter(
|
|
1885
|
-
|
|
1886
|
-
|
|
1736
|
+
return await recoverAfter(getSign);
|
|
1737
|
+
};
|
|
1738
|
+
const recoveryWallet = async (chainType, recoveryType, userPasscode) => {
|
|
1739
|
+
return await window.waitMatchUntilWalletMessage("recoveryWallet", {
|
|
1740
|
+
chainType,
|
|
1741
|
+
recoveryType,
|
|
1742
|
+
userPasscode
|
|
1887
1743
|
});
|
|
1888
1744
|
};
|
|
1889
|
-
const evmAccount = (0,
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
chainType: "ethereum" /* Ethereum */,
|
|
1906
|
-
chain: {
|
|
1907
|
-
id: chain?.id || restTransaction.chainId,
|
|
1908
|
-
name: chain?.name,
|
|
1909
|
-
nativeCurrency: {
|
|
1910
|
-
name: chain?.nativeCurrency?.name || "ETH",
|
|
1911
|
-
symbol: chain?.nativeCurrency?.symbol || "ETH",
|
|
1912
|
-
decimals: chain?.nativeCurrency?.decimals || 18
|
|
1913
|
-
}
|
|
1914
|
-
}
|
|
1915
|
-
});
|
|
1916
|
-
},
|
|
1917
|
-
async signTypedData(typedData) {
|
|
1918
|
-
return "0x";
|
|
1919
|
-
}
|
|
1920
|
-
}) : void 0;
|
|
1921
|
-
}, [address]);
|
|
1922
|
-
(0, import_react6.useEffect)(() => {
|
|
1923
|
-
console.log("qwe-evmAccount", evmAccount);
|
|
1924
|
-
}, [evmAccount]);
|
|
1745
|
+
const evmAccount = address ? (0, import_accounts.toAccount)({
|
|
1746
|
+
address,
|
|
1747
|
+
async signMessage({ message }) {
|
|
1748
|
+
return await signMessage2(message);
|
|
1749
|
+
},
|
|
1750
|
+
async signTransaction(transaction, options) {
|
|
1751
|
+
const { account, ...restTransaction } = transaction;
|
|
1752
|
+
const sign = await signTransaction({
|
|
1753
|
+
...restTransaction
|
|
1754
|
+
});
|
|
1755
|
+
return sign;
|
|
1756
|
+
},
|
|
1757
|
+
async signTypedData(typedData) {
|
|
1758
|
+
return "0x";
|
|
1759
|
+
}
|
|
1760
|
+
}) : void 0;
|
|
1925
1761
|
return {
|
|
1926
|
-
walletReady,
|
|
1927
1762
|
evmAccount,
|
|
1928
1763
|
address,
|
|
1929
|
-
|
|
1764
|
+
recoveryWallet,
|
|
1765
|
+
initWallet,
|
|
1766
|
+
generateWallet,
|
|
1930
1767
|
signMessage: signMessage2,
|
|
1931
1768
|
signTransaction,
|
|
1932
1769
|
isRecovered,
|
|
1933
|
-
recoverAfter
|
|
1934
|
-
generateEmbeddedWallets,
|
|
1935
|
-
recoveryEmbeddedWallets,
|
|
1936
|
-
createWalletClient: (parameters) => {
|
|
1937
|
-
if (!evmAccount) {
|
|
1938
|
-
return;
|
|
1939
|
-
}
|
|
1940
|
-
const obj = (0, import_viem2.createWalletClient)({
|
|
1941
|
-
...parameters,
|
|
1942
|
-
account: evmAccount
|
|
1943
|
-
});
|
|
1944
|
-
const sendTransaction = async (transaction) => {
|
|
1945
|
-
const getSign = async (resolve, reject) => {
|
|
1946
|
-
const { chain, ...restTransaction } = transaction;
|
|
1947
|
-
const chainId = chain ? chain.id : await obj.getChainId();
|
|
1948
|
-
const _chain = chain || obj.chain;
|
|
1949
|
-
const transactionId = Date.now().toString() + Math.random().toString().slice(6);
|
|
1950
|
-
let interval = setInterval(() => {
|
|
1951
|
-
const sendPrepareTransactionRequest = async () => {
|
|
1952
|
-
try {
|
|
1953
|
-
const {
|
|
1954
|
-
chain: chain2,
|
|
1955
|
-
account,
|
|
1956
|
-
...prepareTransactionRequest
|
|
1957
|
-
// @ts-ignore
|
|
1958
|
-
} = await obj.prepareTransactionRequest(transaction);
|
|
1959
|
-
window.matchProvider.sendWalletMessage({
|
|
1960
|
-
method: "prepareTransactionRequest",
|
|
1961
|
-
data: {
|
|
1962
|
-
prepareTransactionRequest,
|
|
1963
|
-
transactionId
|
|
1964
|
-
}
|
|
1965
|
-
});
|
|
1966
|
-
} catch (error) {
|
|
1967
|
-
console.error(error);
|
|
1968
|
-
}
|
|
1969
|
-
};
|
|
1970
|
-
sendPrepareTransactionRequest();
|
|
1971
|
-
}, 1e4);
|
|
1972
|
-
try {
|
|
1973
|
-
const {
|
|
1974
|
-
chain: chain2,
|
|
1975
|
-
account,
|
|
1976
|
-
...prepareTransactionRequest
|
|
1977
|
-
// @ts-ignore
|
|
1978
|
-
} = await obj.prepareTransactionRequest(transaction);
|
|
1979
|
-
const { serializedTransaction } = await window.matchProvider.waitUntilWalletMessage({
|
|
1980
|
-
method: "sendTransaction",
|
|
1981
|
-
data: {
|
|
1982
|
-
transactionId,
|
|
1983
|
-
transaction: {
|
|
1984
|
-
...restTransaction
|
|
1985
|
-
},
|
|
1986
|
-
chainType: "ethereum" /* Ethereum */,
|
|
1987
|
-
chain: {
|
|
1988
|
-
id: chainId,
|
|
1989
|
-
name: _chain?.name,
|
|
1990
|
-
nativeCurrency: _chain?.nativeCurrency
|
|
1991
|
-
},
|
|
1992
|
-
prepareTransactionRequest
|
|
1993
|
-
}
|
|
1994
|
-
});
|
|
1995
|
-
openHashPanel();
|
|
1996
|
-
const txHash = await obj.sendRawTransaction({
|
|
1997
|
-
serializedTransaction
|
|
1998
|
-
});
|
|
1999
|
-
openHashPanel({
|
|
2000
|
-
hash: txHash,
|
|
2001
|
-
chain: _chain
|
|
2002
|
-
});
|
|
2003
|
-
clearInterval(interval);
|
|
2004
|
-
resolve(txHash);
|
|
2005
|
-
} catch (error) {
|
|
2006
|
-
console.error("qwe-sign-error", error);
|
|
2007
|
-
clearInterval(interval);
|
|
2008
|
-
reject(error);
|
|
2009
|
-
}
|
|
2010
|
-
};
|
|
2011
|
-
return await recoverAfter({
|
|
2012
|
-
handle: getSign,
|
|
2013
|
-
chainType: "ethereum" /* Ethereum */
|
|
2014
|
-
});
|
|
2015
|
-
};
|
|
2016
|
-
const deployContract = async (parameters2) => {
|
|
2017
|
-
const { abi, args, bytecode, ...request3 } = parameters2;
|
|
2018
|
-
const calldata = (0, import_viem3.encodeDeployData)({ abi, args, bytecode });
|
|
2019
|
-
return await sendTransaction({
|
|
2020
|
-
...request3,
|
|
2021
|
-
data: calldata
|
|
2022
|
-
});
|
|
2023
|
-
};
|
|
2024
|
-
const writeContract = async (parameters2) => {
|
|
2025
|
-
const { abi, address: address2, args, dataSuffix, functionName, ...request3 } = parameters2;
|
|
2026
|
-
const data = (0, import_viem.encodeFunctionData)({
|
|
2027
|
-
abi,
|
|
2028
|
-
args,
|
|
2029
|
-
functionName
|
|
2030
|
-
});
|
|
2031
|
-
return await sendTransaction({
|
|
2032
|
-
data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
|
|
2033
|
-
to: address2,
|
|
2034
|
-
...request3
|
|
2035
|
-
});
|
|
2036
|
-
};
|
|
2037
|
-
return {
|
|
2038
|
-
...obj,
|
|
2039
|
-
sendTransaction,
|
|
2040
|
-
deployContract,
|
|
2041
|
-
writeContract
|
|
2042
|
-
};
|
|
2043
|
-
}
|
|
1770
|
+
recoverAfter
|
|
2044
1771
|
};
|
|
2045
1772
|
}
|
|
2046
1773
|
|
|
2047
1774
|
// src/hooks/useCopyClipboard.ts
|
|
2048
1775
|
var import_copy_to_clipboard = __toESM(require("copy-to-clipboard"));
|
|
2049
|
-
var
|
|
1776
|
+
var import_react5 = require("react");
|
|
2050
1777
|
function useCopyClipboard(timeout = 500) {
|
|
2051
|
-
const [isCopied, setIsCopied] = (0,
|
|
2052
|
-
const staticCopy = (0,
|
|
1778
|
+
const [isCopied, setIsCopied] = (0, import_react5.useState)(false);
|
|
1779
|
+
const staticCopy = (0, import_react5.useCallback)((text) => {
|
|
2053
1780
|
const didCopy = (0, import_copy_to_clipboard.default)(text);
|
|
2054
1781
|
setIsCopied(didCopy);
|
|
2055
1782
|
}, []);
|
|
2056
|
-
(0,
|
|
1783
|
+
(0, import_react5.useEffect)(() => {
|
|
2057
1784
|
if (isCopied) {
|
|
2058
1785
|
const hide = setTimeout(() => {
|
|
2059
1786
|
setIsCopied(false);
|
|
@@ -2069,24 +1796,21 @@ function useCopyClipboard(timeout = 500) {
|
|
|
2069
1796
|
|
|
2070
1797
|
// src/components/PasswordModal/index.tsx
|
|
2071
1798
|
var import_react_intl2 = require("react-intl");
|
|
2072
|
-
var
|
|
1799
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
2073
1800
|
function PasswordModal({
|
|
2074
1801
|
title,
|
|
2075
1802
|
isOpen,
|
|
2076
1803
|
onSuccess,
|
|
2077
|
-
chainType = "ethereum" /* Ethereum */,
|
|
2078
|
-
recoveryType = "user_passcode_recovery_key" /* UserPasscode */,
|
|
2079
1804
|
...props
|
|
2080
1805
|
}) {
|
|
2081
1806
|
const { refreshOverview, overview } = useUserInfo();
|
|
2082
1807
|
const { isLogin, did } = useUserInfo();
|
|
2083
|
-
const [password, setPassword] = (0,
|
|
2084
|
-
const [rePassword, setRePassword] = (0,
|
|
2085
|
-
const [error, setError] = (0,
|
|
2086
|
-
const {
|
|
2087
|
-
const { walletReady } = useStore_default();
|
|
1808
|
+
const [password, setPassword] = (0, import_react6.useState)("");
|
|
1809
|
+
const [rePassword, setRePassword] = (0, import_react6.useState)("");
|
|
1810
|
+
const [error, setError] = (0, import_react6.useState)("");
|
|
1811
|
+
const { generateWallet, initWallet } = useWallet();
|
|
2088
1812
|
const intl = (0, import_react_intl2.useIntl)();
|
|
2089
|
-
const passwordError = (0,
|
|
1813
|
+
const passwordError = (0, import_react6.useMemo)(() => {
|
|
2090
1814
|
if (password.length < 6) return intl.formatMessage({
|
|
2091
1815
|
id: "passwordMinError"
|
|
2092
1816
|
}, {
|
|
@@ -2094,7 +1818,7 @@ function PasswordModal({
|
|
|
2094
1818
|
});
|
|
2095
1819
|
return "";
|
|
2096
1820
|
}, [password]);
|
|
2097
|
-
const rePasswordError = (0,
|
|
1821
|
+
const rePasswordError = (0, import_react6.useMemo)(() => {
|
|
2098
1822
|
if (rePassword != password) {
|
|
2099
1823
|
return intl.formatMessage({
|
|
2100
1824
|
id: "passwordMatchError"
|
|
@@ -2102,25 +1826,25 @@ function PasswordModal({
|
|
|
2102
1826
|
}
|
|
2103
1827
|
return "";
|
|
2104
1828
|
}, [rePassword, password]);
|
|
2105
|
-
(0,
|
|
1829
|
+
(0, import_react6.useEffect)(() => {
|
|
2106
1830
|
if (isOpen) {
|
|
2107
1831
|
setPassword("");
|
|
2108
1832
|
setRePassword("");
|
|
2109
1833
|
}
|
|
2110
1834
|
}, [isOpen, overview]);
|
|
2111
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
1835
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react6.useState)(false);
|
|
2112
1836
|
const onContinue = async () => {
|
|
2113
1837
|
if (isSubmitting) return;
|
|
2114
1838
|
try {
|
|
2115
1839
|
setIsSubmitting(true);
|
|
2116
|
-
|
|
2117
|
-
|
|
1840
|
+
const did2 = overview ? overview.did.split(":")[2] : "";
|
|
1841
|
+
await initWallet({
|
|
1842
|
+
did: did2,
|
|
2118
1843
|
address: ""
|
|
2119
1844
|
});
|
|
2120
|
-
const address = await
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
recoveryType
|
|
1845
|
+
const address = await generateWallet({
|
|
1846
|
+
did: did2,
|
|
1847
|
+
userPasscode: password
|
|
2124
1848
|
});
|
|
2125
1849
|
await refreshOverview();
|
|
2126
1850
|
onSuccess && onSuccess();
|
|
@@ -2130,15 +1854,15 @@ function PasswordModal({
|
|
|
2130
1854
|
setIsSubmitting(false);
|
|
2131
1855
|
}
|
|
2132
1856
|
};
|
|
2133
|
-
return /* @__PURE__ */ (0,
|
|
1857
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
2134
1858
|
id: "passwordTitle"
|
|
2135
|
-
}), children: /* @__PURE__ */ (0,
|
|
2136
|
-
/* @__PURE__ */ (0,
|
|
2137
|
-
/* @__PURE__ */ (0,
|
|
2138
|
-
/* @__PURE__ */ (0,
|
|
1859
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "matchid-password-box", children: [
|
|
1860
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "matchid-password-header", children: [
|
|
1861
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "matchid-password-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PasswordRoundIcon, {}) }),
|
|
1862
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "matchid-password-header-content", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_intl2.FormattedMessage, { id: "passwordTips" }) })
|
|
2139
1863
|
] }),
|
|
2140
|
-
/* @__PURE__ */ (0,
|
|
2141
|
-
/* @__PURE__ */ (0,
|
|
1864
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "matchid-password-content", children: [
|
|
1865
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Field, { label: intl.formatMessage({ id: "password" }), error: password.length > 0 && passwordError, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
2142
1866
|
Input,
|
|
2143
1867
|
{
|
|
2144
1868
|
placeholder: intl.formatMessage({ id: "passwordPlaceholder" }),
|
|
@@ -2148,9 +1872,9 @@ function PasswordModal({
|
|
|
2148
1872
|
value: password
|
|
2149
1873
|
}
|
|
2150
1874
|
) }),
|
|
2151
|
-
/* @__PURE__ */ (0,
|
|
1875
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Field, { label: intl.formatMessage({
|
|
2152
1876
|
id: "rePassword"
|
|
2153
|
-
}), error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0,
|
|
1877
|
+
}), error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
2154
1878
|
Input,
|
|
2155
1879
|
{
|
|
2156
1880
|
placeholder: intl.formatMessage({
|
|
@@ -2163,69 +1887,88 @@ function PasswordModal({
|
|
|
2163
1887
|
}
|
|
2164
1888
|
) })
|
|
2165
1889
|
] }),
|
|
2166
|
-
/* @__PURE__ */ (0,
|
|
1890
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
2167
1891
|
Button,
|
|
2168
1892
|
{
|
|
2169
|
-
disabled: password.length == 0 || !!passwordError || !!rePasswordError
|
|
1893
|
+
disabled: password.length == 0 || !!passwordError || !!rePasswordError,
|
|
2170
1894
|
highlight: true,
|
|
2171
1895
|
block: true,
|
|
2172
1896
|
size: "lg",
|
|
2173
1897
|
onClick: onContinue,
|
|
2174
1898
|
loading: isSubmitting,
|
|
2175
|
-
children: /* @__PURE__ */ (0,
|
|
1899
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_intl2.FormattedMessage, { id: "continue" })
|
|
2176
1900
|
}
|
|
2177
1901
|
)
|
|
2178
1902
|
] }) });
|
|
2179
1903
|
}
|
|
2180
1904
|
|
|
2181
1905
|
// src/components/RecoveryModal/index.tsx
|
|
2182
|
-
var
|
|
1906
|
+
var import_react7 = require("react");
|
|
2183
1907
|
var import_react_intl3 = require("react-intl");
|
|
2184
|
-
var
|
|
1908
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
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
|
+
}));
|
|
2185
1942
|
|
|
2186
1943
|
// src/components/CEXBindModal/index.tsx
|
|
2187
|
-
var
|
|
1944
|
+
var import_react8 = require("react");
|
|
2188
1945
|
var import_react_intl4 = require("react-intl");
|
|
2189
|
-
var
|
|
2190
|
-
|
|
2191
|
-
// src/components/HashPanel/index.tsx
|
|
2192
|
-
var import_viem4 = require("viem");
|
|
2193
|
-
var import_react11 = require("react");
|
|
2194
|
-
var import_react_query = require("@tanstack/react-query");
|
|
2195
|
-
|
|
2196
|
-
// src/components/Drawer/index.tsx
|
|
2197
|
-
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
2198
|
-
|
|
2199
|
-
// src/components/ModalDrawer/index.tsx
|
|
2200
|
-
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
2201
|
-
|
|
2202
|
-
// src/components/HashPanel/index.tsx
|
|
2203
|
-
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
1946
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
2204
1947
|
|
|
2205
1948
|
// src/context/BusinessProvider.tsx
|
|
2206
|
-
var
|
|
1949
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
2207
1950
|
|
|
2208
1951
|
// src/context/index.tsx
|
|
2209
|
-
var
|
|
1952
|
+
var import_jsx_runtime53 = (
|
|
2210
1953
|
// <MpcWalletProvider>
|
|
2211
1954
|
require("react/jsx-runtime")
|
|
2212
1955
|
);
|
|
2213
1956
|
|
|
2214
1957
|
// src/hooks/useWalletInit.ts
|
|
2215
|
-
var
|
|
1958
|
+
var import_react10 = require("react");
|
|
2216
1959
|
var AppClientId2 = getAppClientId();
|
|
2217
1960
|
|
|
2218
1961
|
// src/hooks/useInit.tsx
|
|
2219
|
-
var
|
|
1962
|
+
var import_react11 = require("react");
|
|
2220
1963
|
|
|
2221
1964
|
// src/MatchContext.tsx
|
|
2222
|
-
var
|
|
1965
|
+
var import_react_query = require("@tanstack/react-query");
|
|
2223
1966
|
var import_react_intl5 = require("react-intl");
|
|
2224
|
-
var
|
|
2225
|
-
var queryClient = new
|
|
2226
|
-
var MatchContext = (0,
|
|
1967
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
1968
|
+
var queryClient = new import_react_query.QueryClient();
|
|
1969
|
+
var MatchContext = (0, import_react12.createContext)(void 0);
|
|
2227
1970
|
var useMatch = () => {
|
|
2228
|
-
const context = (0,
|
|
1971
|
+
const context = (0, import_react12.useContext)(MatchContext);
|
|
2229
1972
|
if (context === void 0) {
|
|
2230
1973
|
throw new Error("useMatch must be used within a MatchProvider");
|
|
2231
1974
|
}
|
|
@@ -2252,8 +1995,7 @@ function useUserInfo() {
|
|
|
2252
1995
|
const { open: TONOpen } = useTONModalStore();
|
|
2253
1996
|
const { open: BTCOpen } = useBTCModalStore();
|
|
2254
1997
|
const { open: CEXBindOpen } = useCEXBindModalStore();
|
|
2255
|
-
const
|
|
2256
|
-
const isLogin = (0, import_react16.useMemo)(() => !!token && !!overview, [token, overview]);
|
|
1998
|
+
const isLogin = (0, import_react13.useMemo)(() => !!token, [token]);
|
|
2257
1999
|
const logout = async () => {
|
|
2258
2000
|
try {
|
|
2259
2001
|
await toLogoutApi();
|
|
@@ -2291,10 +2033,8 @@ function useUserInfo() {
|
|
|
2291
2033
|
"width=800,height=600"
|
|
2292
2034
|
);
|
|
2293
2035
|
};
|
|
2294
|
-
const loginMethod = async (method
|
|
2036
|
+
const loginMethod = async (method) => {
|
|
2295
2037
|
switch (method) {
|
|
2296
|
-
case "wallet":
|
|
2297
|
-
return walletModalStore.open("login", extra?.methods);
|
|
2298
2038
|
case "evm":
|
|
2299
2039
|
return window.open(`${endpoints.auth}login/wallet?appid=${appid}`);
|
|
2300
2040
|
case "sol":
|
|
@@ -2383,13 +2123,11 @@ function useUserInfo() {
|
|
|
2383
2123
|
}
|
|
2384
2124
|
throw new Error(res.message);
|
|
2385
2125
|
};
|
|
2386
|
-
const bind = async (method
|
|
2126
|
+
const bind = async (method) => {
|
|
2387
2127
|
if (!token) {
|
|
2388
2128
|
throw new Error("You must login first");
|
|
2389
2129
|
}
|
|
2390
2130
|
switch (method) {
|
|
2391
|
-
case "wallet":
|
|
2392
|
-
return walletModalStore.open("bind", extra?.methods);
|
|
2393
2131
|
case "evm":
|
|
2394
2132
|
return window.open(`${endpoints.auth}bind/wallet?appid=${appid}&st=` + encodeURIComponent(encodeBase64(token)));
|
|
2395
2133
|
case "sol":
|
|
@@ -2491,7 +2229,7 @@ function useUserInfo() {
|
|
|
2491
2229
|
}
|
|
2492
2230
|
|
|
2493
2231
|
// src/components/EmailModal/StepVerify.tsx
|
|
2494
|
-
var
|
|
2232
|
+
var import_react14 = require("react");
|
|
2495
2233
|
|
|
2496
2234
|
// src/config/index.tsx
|
|
2497
2235
|
var EMAIL_INTERVAL = 60;
|
|
@@ -2499,21 +2237,21 @@ var EMAIL_CODE_LENGTH = 6;
|
|
|
2499
2237
|
|
|
2500
2238
|
// src/components/EmailModal/StepVerify.tsx
|
|
2501
2239
|
var import_react_intl6 = require("react-intl");
|
|
2502
|
-
var
|
|
2240
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
2503
2241
|
function StepVerify(props) {
|
|
2504
2242
|
const intl = (0, import_react_intl6.useIntl)();
|
|
2505
2243
|
const { getLoginEmailCode, loginByEmail } = useUserInfo();
|
|
2506
|
-
const [error, setError] = (0,
|
|
2507
|
-
const [code, setCode] = (0,
|
|
2508
|
-
const [sending, setSending] = (0,
|
|
2509
|
-
const [submitting, setSubmitting] = (0,
|
|
2510
|
-
const sendTimeRef = (0,
|
|
2511
|
-
const [sendBtnText, setSendBtnText] = (0,
|
|
2244
|
+
const [error, setError] = (0, import_react14.useState)("");
|
|
2245
|
+
const [code, setCode] = (0, import_react14.useState)("");
|
|
2246
|
+
const [sending, setSending] = (0, import_react14.useState)(false);
|
|
2247
|
+
const [submitting, setSubmitting] = (0, import_react14.useState)(false);
|
|
2248
|
+
const sendTimeRef = (0, import_react14.useRef)(0);
|
|
2249
|
+
const [sendBtnText, setSendBtnText] = (0, import_react14.useState)(intl.formatMessage({
|
|
2512
2250
|
id: "send"
|
|
2513
2251
|
}));
|
|
2514
2252
|
const intervalTime = EMAIL_INTERVAL;
|
|
2515
2253
|
const codeLength = EMAIL_CODE_LENGTH;
|
|
2516
|
-
const intervalRef = (0,
|
|
2254
|
+
const intervalRef = (0, import_react14.useRef)(null);
|
|
2517
2255
|
const isDownMd = useDownMd();
|
|
2518
2256
|
const onSend = async () => {
|
|
2519
2257
|
if (sendTimeRef.current > 0) {
|
|
@@ -2544,7 +2282,7 @@ function StepVerify(props) {
|
|
|
2544
2282
|
setSending(false);
|
|
2545
2283
|
}
|
|
2546
2284
|
};
|
|
2547
|
-
(0,
|
|
2285
|
+
(0, import_react14.useEffect)(() => {
|
|
2548
2286
|
onSend();
|
|
2549
2287
|
return () => {
|
|
2550
2288
|
if (intervalRef.current) {
|
|
@@ -2552,7 +2290,7 @@ function StepVerify(props) {
|
|
|
2552
2290
|
}
|
|
2553
2291
|
};
|
|
2554
2292
|
}, []);
|
|
2555
|
-
const canContinue = (0,
|
|
2293
|
+
const canContinue = (0, import_react14.useMemo)(() => {
|
|
2556
2294
|
return code.length === codeLength;
|
|
2557
2295
|
}, [code]);
|
|
2558
2296
|
const onContinue = async () => {
|
|
@@ -2576,17 +2314,17 @@ function StepVerify(props) {
|
|
|
2576
2314
|
setSubmitting(false);
|
|
2577
2315
|
}
|
|
2578
2316
|
};
|
|
2579
|
-
return /* @__PURE__ */ (0,
|
|
2580
|
-
/* @__PURE__ */ (0,
|
|
2581
|
-
/* @__PURE__ */ (0,
|
|
2582
|
-
/* @__PURE__ */ (0,
|
|
2583
|
-
/* @__PURE__ */ (0,
|
|
2584
|
-
/* @__PURE__ */ (0,
|
|
2317
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "matchid-email-verify-box", children: [
|
|
2318
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "matchid-email-verify-header", children: [
|
|
2319
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
|
|
2320
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "matchid-email-verify-header-content", children: [
|
|
2321
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "matchid-email-verify-header-value", children: props.email }),
|
|
2322
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_intl6.FormattedMessage, { id: "sendEmailTips" }) })
|
|
2585
2323
|
] })
|
|
2586
2324
|
] }),
|
|
2587
|
-
/* @__PURE__ */ (0,
|
|
2325
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Field, { label: intl.formatMessage({
|
|
2588
2326
|
id: "verificationCode"
|
|
2589
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
2327
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
2590
2328
|
Input,
|
|
2591
2329
|
{
|
|
2592
2330
|
placeholder: intl.formatMessage({
|
|
@@ -2596,7 +2334,7 @@ function StepVerify(props) {
|
|
|
2596
2334
|
maxLength: codeLength,
|
|
2597
2335
|
onChange: (e) => setCode(e.target.value),
|
|
2598
2336
|
value: code,
|
|
2599
|
-
after: /* @__PURE__ */ (0,
|
|
2337
|
+
after: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
2600
2338
|
Button,
|
|
2601
2339
|
{
|
|
2602
2340
|
highlight: true,
|
|
@@ -2615,13 +2353,13 @@ function StepVerify(props) {
|
|
|
2615
2353
|
)
|
|
2616
2354
|
}
|
|
2617
2355
|
) }),
|
|
2618
|
-
/* @__PURE__ */ (0,
|
|
2356
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_intl6.FormattedMessage, { id: "continue" }) })
|
|
2619
2357
|
] });
|
|
2620
2358
|
}
|
|
2621
2359
|
|
|
2622
2360
|
// src/components/EmailModal/index.tsx
|
|
2623
2361
|
var import_react_intl7 = require("react-intl");
|
|
2624
|
-
var
|
|
2362
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
2625
2363
|
function EmailModal({
|
|
2626
2364
|
isOpen = false,
|
|
2627
2365
|
width = 480,
|
|
@@ -2629,16 +2367,16 @@ function EmailModal({
|
|
|
2629
2367
|
onBack,
|
|
2630
2368
|
onLogin
|
|
2631
2369
|
}) {
|
|
2632
|
-
const [step, setStep] = (0,
|
|
2633
|
-
const [emailVal, setEmailVal] = (0,
|
|
2370
|
+
const [step, setStep] = (0, import_react15.useState)("input");
|
|
2371
|
+
const [emailVal, setEmailVal] = (0, import_react15.useState)("");
|
|
2634
2372
|
const intl = (0, import_react_intl7.useIntl)();
|
|
2635
|
-
(0,
|
|
2373
|
+
(0, import_react15.useEffect)(() => {
|
|
2636
2374
|
if (!isOpen) {
|
|
2637
2375
|
setStep("input");
|
|
2638
2376
|
setEmailVal("");
|
|
2639
2377
|
}
|
|
2640
2378
|
}, [isOpen]);
|
|
2641
|
-
return /* @__PURE__ */ (0,
|
|
2379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
2642
2380
|
ModalWithHeader,
|
|
2643
2381
|
{
|
|
2644
2382
|
isOpen,
|
|
@@ -2648,17 +2386,17 @@ function EmailModal({
|
|
|
2648
2386
|
id: "email"
|
|
2649
2387
|
}),
|
|
2650
2388
|
onBack: step == "verify" ? () => setStep("input") : onBack,
|
|
2651
|
-
children: step === "input" ? /* @__PURE__ */ (0,
|
|
2389
|
+
children: step === "input" ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(StepEmail, { email: emailVal, onContinue: (email) => {
|
|
2652
2390
|
setEmailVal(email);
|
|
2653
2391
|
setStep("verify");
|
|
2654
|
-
} }) : /* @__PURE__ */ (0,
|
|
2392
|
+
} }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(StepVerify, { email: emailVal, onSuccess: onLogin })
|
|
2655
2393
|
}
|
|
2656
2394
|
);
|
|
2657
2395
|
}
|
|
2658
2396
|
|
|
2659
2397
|
// src/components/Popover/index.tsx
|
|
2660
|
-
var
|
|
2661
|
-
var
|
|
2398
|
+
var import_react16 = require("react");
|
|
2399
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
2662
2400
|
function Popover({
|
|
2663
2401
|
children,
|
|
2664
2402
|
content,
|
|
@@ -2667,8 +2405,8 @@ function Popover({
|
|
|
2667
2405
|
className = "",
|
|
2668
2406
|
gap = "20px"
|
|
2669
2407
|
}) {
|
|
2670
|
-
const [active, setActive] = (0,
|
|
2671
|
-
return children && /* @__PURE__ */ (0,
|
|
2408
|
+
const [active, setActive] = (0, import_react16.useState)(false);
|
|
2409
|
+
return children && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
2672
2410
|
"div",
|
|
2673
2411
|
{
|
|
2674
2412
|
onClick: () => {
|
|
@@ -2679,18 +2417,18 @@ function Popover({
|
|
|
2679
2417
|
className: `matchid-popover-box matchid-popover-${position} matchid-popover-${type} ${className} ${type == "click" && active ? "matchid-popover-click-active" : ""}`,
|
|
2680
2418
|
children: [
|
|
2681
2419
|
children,
|
|
2682
|
-
/* @__PURE__ */ (0,
|
|
2420
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { style: {
|
|
2683
2421
|
paddingTop: gap
|
|
2684
|
-
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0,
|
|
2422
|
+
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: `matchid-popover-content`, children: content }) })
|
|
2685
2423
|
]
|
|
2686
2424
|
}
|
|
2687
2425
|
);
|
|
2688
2426
|
}
|
|
2689
2427
|
|
|
2690
2428
|
// src/components/LoginBox/index.tsx
|
|
2691
|
-
var
|
|
2429
|
+
var import_react17 = require("react");
|
|
2692
2430
|
var import_react_intl8 = require("react-intl");
|
|
2693
|
-
var
|
|
2431
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
2694
2432
|
var RecommendItem = ({
|
|
2695
2433
|
icon,
|
|
2696
2434
|
name,
|
|
@@ -2699,20 +2437,20 @@ var RecommendItem = ({
|
|
|
2699
2437
|
children,
|
|
2700
2438
|
footer
|
|
2701
2439
|
}) => {
|
|
2702
|
-
return /* @__PURE__ */ (0,
|
|
2703
|
-
/* @__PURE__ */ (0,
|
|
2704
|
-
/* @__PURE__ */ (0,
|
|
2705
|
-
/* @__PURE__ */ (0,
|
|
2706
|
-
/* @__PURE__ */ (0,
|
|
2440
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "matchid-login-recommend-method", children: [
|
|
2441
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "matchid-login-recommend-method-item", onClick, children: [
|
|
2442
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "matchid-login-recommend-method-content", children: [
|
|
2443
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "matchid-login-recommend-method-icon", children: icon }),
|
|
2444
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "matchid-login-recommend-method-name", children: name })
|
|
2707
2445
|
] }),
|
|
2708
|
-
footer ? footer : children ? /* @__PURE__ */ (0,
|
|
2446
|
+
footer ? footer : children ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2709
2447
|
ArrowDownIcon,
|
|
2710
2448
|
{
|
|
2711
2449
|
className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
|
|
2712
2450
|
size: 20,
|
|
2713
2451
|
color: "var(--matchid-arrow-color)"
|
|
2714
2452
|
}
|
|
2715
|
-
) : /* @__PURE__ */ (0,
|
|
2453
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2716
2454
|
ArrowRightIcon,
|
|
2717
2455
|
{
|
|
2718
2456
|
className: "matchid-login-recommend-method-arrow",
|
|
@@ -2721,7 +2459,7 @@ var RecommendItem = ({
|
|
|
2721
2459
|
}
|
|
2722
2460
|
)
|
|
2723
2461
|
] }),
|
|
2724
|
-
children && /* @__PURE__ */ (0,
|
|
2462
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2725
2463
|
"div",
|
|
2726
2464
|
{
|
|
2727
2465
|
className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
|
|
@@ -2743,102 +2481,131 @@ function LoginBox({
|
|
|
2743
2481
|
"linkedin",
|
|
2744
2482
|
"discord"
|
|
2745
2483
|
],
|
|
2746
|
-
walletMethods =
|
|
2484
|
+
walletMethods = ["evm", "sol", "btc", "tron"],
|
|
2747
2485
|
inModal = false
|
|
2748
2486
|
}) {
|
|
2749
|
-
const [emailOpen, setEmailOpen] = (0,
|
|
2487
|
+
const [emailOpen, setEmailOpen] = (0, import_react17.useState)(false);
|
|
2750
2488
|
const { login } = useUserInfo();
|
|
2751
|
-
const [showWallet, setShowWallet] = (0,
|
|
2489
|
+
const [showWallet, setShowWallet] = (0, import_react17.useState)(false);
|
|
2752
2490
|
const intl = (0, import_react_intl8.useIntl)();
|
|
2753
2491
|
const isDownMd = useDownMd();
|
|
2754
2492
|
const methodMap = {
|
|
2755
2493
|
wallet: {
|
|
2756
|
-
icon: /* @__PURE__ */ (0,
|
|
2494
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(WalletIcon, { size: isDownMd ? 36 : 40 }),
|
|
2757
2495
|
name: intl.formatMessage({ id: "wallet" }),
|
|
2758
2496
|
onClick: () => setShowWallet(!showWallet),
|
|
2759
2497
|
type: "wallet"
|
|
2760
2498
|
},
|
|
2761
2499
|
email: {
|
|
2762
|
-
icon: /* @__PURE__ */ (0,
|
|
2500
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(EmailIcon, { size: isDownMd ? 36 : 40 }),
|
|
2763
2501
|
name: intl.formatMessage({ id: "email" }),
|
|
2764
2502
|
onClick: () => {
|
|
2765
2503
|
setEmailOpen(true);
|
|
2766
2504
|
}
|
|
2767
2505
|
},
|
|
2768
2506
|
google: {
|
|
2769
|
-
icon: /* @__PURE__ */ (0,
|
|
2507
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(GoogleIcon, { size: isDownMd ? 36 : 40 }),
|
|
2770
2508
|
name: "Google",
|
|
2771
2509
|
onClick: () => login("google")
|
|
2772
2510
|
},
|
|
2773
2511
|
twitter: {
|
|
2774
|
-
icon: /* @__PURE__ */ (0,
|
|
2512
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(XIcon, { size: isDownMd ? 36 : 40 }),
|
|
2775
2513
|
name: "X",
|
|
2776
2514
|
onClick: () => login("twitter")
|
|
2777
2515
|
},
|
|
2778
2516
|
telegram: {
|
|
2779
|
-
icon: /* @__PURE__ */ (0,
|
|
2517
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(TelegramIcon, { size: isDownMd ? 36 : 40 }),
|
|
2780
2518
|
name: "Telegram",
|
|
2781
2519
|
onClick: () => login("telegram")
|
|
2782
2520
|
},
|
|
2783
2521
|
github: {
|
|
2784
|
-
icon: /* @__PURE__ */ (0,
|
|
2522
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(GithubIcon, { size: isDownMd ? 36 : 40 }),
|
|
2785
2523
|
name: "Github",
|
|
2786
2524
|
onClick: () => login("github")
|
|
2787
2525
|
},
|
|
2788
2526
|
discord: {
|
|
2789
|
-
icon: /* @__PURE__ */ (0,
|
|
2527
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(DiscordIcon, { size: isDownMd ? 36 : 40 }),
|
|
2790
2528
|
name: "Discord",
|
|
2791
2529
|
onClick: () => login("discord")
|
|
2792
2530
|
},
|
|
2793
2531
|
linkedin: {
|
|
2794
|
-
icon: /* @__PURE__ */ (0,
|
|
2532
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
|
|
2795
2533
|
name: "LinkedIn",
|
|
2796
2534
|
onClick: () => login("linkedin")
|
|
2797
2535
|
},
|
|
2798
2536
|
facebook: {
|
|
2799
|
-
icon: /* @__PURE__ */ (0,
|
|
2537
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(FacebookIcon, { size: isDownMd ? 36 : 40 }),
|
|
2800
2538
|
name: "Facebook",
|
|
2801
2539
|
onClick: () => login("facebook")
|
|
2802
2540
|
},
|
|
2803
2541
|
youtube: {
|
|
2804
|
-
icon: /* @__PURE__ */ (0,
|
|
2542
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
|
|
2805
2543
|
name: "Youtube",
|
|
2806
2544
|
onClick: () => login("youtube")
|
|
2807
2545
|
}
|
|
2808
2546
|
};
|
|
2809
|
-
const
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
/* @__PURE__ */ (0,
|
|
2813
|
-
|
|
2547
|
+
const walletMap = {
|
|
2548
|
+
evm: {
|
|
2549
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2550
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2551
|
+
name: "EVM",
|
|
2552
|
+
onClick: () => login("evm")
|
|
2553
|
+
},
|
|
2554
|
+
sol: {
|
|
2555
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2556
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2557
|
+
name: "SOL",
|
|
2558
|
+
onClick: () => login("sol")
|
|
2559
|
+
},
|
|
2560
|
+
btc: {
|
|
2561
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2562
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2563
|
+
name: "BTC",
|
|
2564
|
+
onClick: () => login("btc")
|
|
2565
|
+
},
|
|
2566
|
+
tron: {
|
|
2567
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2568
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2569
|
+
name: "TRON",
|
|
2570
|
+
onClick: () => login("tron")
|
|
2571
|
+
},
|
|
2572
|
+
ton: {
|
|
2573
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2574
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
2575
|
+
name: "TON",
|
|
2576
|
+
onClick: () => login("ton")
|
|
2577
|
+
}
|
|
2578
|
+
};
|
|
2579
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [
|
|
2580
|
+
(!inModal || !emailOpen) && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "matchid-login-box", children: [
|
|
2581
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "matchid-login-recommend-list", children: recommendMethods.map((m) => {
|
|
2582
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2814
2583
|
RecommendItem,
|
|
2815
2584
|
{
|
|
2816
2585
|
icon: methodMap[m]?.icon,
|
|
2817
2586
|
name: methodMap[m]?.name,
|
|
2818
2587
|
onClick: methodMap[m]?.onClick,
|
|
2819
2588
|
showChildren: m == "wallet" && showWallet,
|
|
2820
|
-
children: m == "wallet" && /* @__PURE__ */ (0,
|
|
2821
|
-
/* @__PURE__ */ (0,
|
|
2822
|
-
/* @__PURE__ */ (0,
|
|
2589
|
+
children: m == "wallet" && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [
|
|
2590
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
2591
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "matchid-login-recommend-wallet-list", children: walletMethods.map((n) => {
|
|
2823
2592
|
const m2 = walletMap[n];
|
|
2824
|
-
return /* @__PURE__ */ (0,
|
|
2593
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
2825
2594
|
"div",
|
|
2826
2595
|
{
|
|
2827
2596
|
className: "matchid-login-recommend-wallet-item",
|
|
2828
|
-
onClick:
|
|
2829
|
-
login(m2.method);
|
|
2830
|
-
},
|
|
2597
|
+
onClick: m2.onClick,
|
|
2831
2598
|
children: [
|
|
2832
|
-
/* @__PURE__ */ (0,
|
|
2833
|
-
/* @__PURE__ */ (0,
|
|
2834
|
-
/* @__PURE__ */ (0,
|
|
2599
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "matchid-login-recommend-wallet-item-content", children: [
|
|
2600
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
|
|
2601
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2835
2602
|
"div",
|
|
2836
2603
|
{
|
|
2837
2604
|
className: "matchid-login-recommend-wallet-item-hover-icon",
|
|
2838
2605
|
children: m2.activeIcon
|
|
2839
2606
|
}
|
|
2840
2607
|
),
|
|
2841
|
-
/* @__PURE__ */ (0,
|
|
2608
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2842
2609
|
"span",
|
|
2843
2610
|
{
|
|
2844
2611
|
className: "matchid-login-recommend-wallet-item-name",
|
|
@@ -2846,7 +2613,7 @@ function LoginBox({
|
|
|
2846
2613
|
}
|
|
2847
2614
|
)
|
|
2848
2615
|
] }),
|
|
2849
|
-
/* @__PURE__ */ (0,
|
|
2616
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2850
2617
|
ArrowRightIcon,
|
|
2851
2618
|
{
|
|
2852
2619
|
className: "matchid-login-recommend-wallet-item-arrow",
|
|
@@ -2864,10 +2631,10 @@ function LoginBox({
|
|
|
2864
2631
|
m
|
|
2865
2632
|
);
|
|
2866
2633
|
}) }),
|
|
2867
|
-
methods.length > 0 && /* @__PURE__ */ (0,
|
|
2868
|
-
/* @__PURE__ */ (0,
|
|
2869
|
-
/* @__PURE__ */ (0,
|
|
2870
|
-
return /* @__PURE__ */ (0,
|
|
2634
|
+
methods.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "matchid-login-other", children: [
|
|
2635
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_intl8.FormattedMessage, { id: "otherLoginMethods" }) }),
|
|
2636
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "matchid-login-method-box", children: methods.map((m) => {
|
|
2637
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2871
2638
|
"div",
|
|
2872
2639
|
{
|
|
2873
2640
|
className: "matchid-login-method-item",
|
|
@@ -2880,7 +2647,7 @@ function LoginBox({
|
|
|
2880
2647
|
}) })
|
|
2881
2648
|
] })
|
|
2882
2649
|
] }),
|
|
2883
|
-
/* @__PURE__ */ (0,
|
|
2650
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2884
2651
|
EmailModal,
|
|
2885
2652
|
{
|
|
2886
2653
|
isOpen: emailOpen,
|
|
@@ -2896,56 +2663,56 @@ function LoginBox({
|
|
|
2896
2663
|
}
|
|
2897
2664
|
|
|
2898
2665
|
// src/components/LoginButton/index.tsx
|
|
2899
|
-
var
|
|
2666
|
+
var import_react19 = require("react");
|
|
2900
2667
|
|
|
2901
2668
|
// src/components/LoginPanel/index.tsx
|
|
2902
2669
|
var import_react_intl9 = require("react-intl");
|
|
2903
|
-
var
|
|
2670
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
2904
2671
|
function LoginPanel({
|
|
2905
2672
|
header,
|
|
2906
2673
|
onClose,
|
|
2907
2674
|
...props
|
|
2908
2675
|
}) {
|
|
2909
2676
|
const isDownMd = useDownMd();
|
|
2910
|
-
return /* @__PURE__ */ (0,
|
|
2911
|
-
header ? header : /* @__PURE__ */ (0,
|
|
2912
|
-
/* @__PURE__ */ (0,
|
|
2913
|
-
/* @__PURE__ */ (0,
|
|
2914
|
-
/* @__PURE__ */ (0,
|
|
2677
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-login-panel", children: [
|
|
2678
|
+
header ? header : /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-login-panel-header", children: [
|
|
2679
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-login-panel-header-content", children: [
|
|
2680
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_intl9.FormattedMessage, { id: "loginTitle" }) }),
|
|
2681
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_intl9.FormattedMessage, { id: "loginTips" }) })
|
|
2915
2682
|
] }),
|
|
2916
|
-
onClose && /* @__PURE__ */ (0,
|
|
2683
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
|
|
2917
2684
|
] }),
|
|
2918
|
-
/* @__PURE__ */ (0,
|
|
2919
|
-
/* @__PURE__ */ (0,
|
|
2685
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-login-panel-divide" }),
|
|
2686
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(LoginBox, { ...props }) })
|
|
2920
2687
|
] });
|
|
2921
2688
|
}
|
|
2922
2689
|
|
|
2923
2690
|
// src/components/LoginModal/index.tsx
|
|
2924
|
-
var
|
|
2691
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
2925
2692
|
function LoginModal({
|
|
2926
2693
|
isOpen = false,
|
|
2927
2694
|
width = 480,
|
|
2928
2695
|
...props
|
|
2929
2696
|
}) {
|
|
2930
2697
|
const { isLogin } = useUserInfo();
|
|
2931
|
-
return /* @__PURE__ */ (0,
|
|
2698
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
2932
2699
|
Modal,
|
|
2933
2700
|
{
|
|
2934
2701
|
isOpen: isOpen && !isLogin,
|
|
2935
2702
|
width,
|
|
2936
|
-
children: /* @__PURE__ */ (0,
|
|
2703
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(LoginPanel, { ...props, inModal: true })
|
|
2937
2704
|
}
|
|
2938
2705
|
);
|
|
2939
2706
|
}
|
|
2940
2707
|
|
|
2941
2708
|
// src/components/UserPopover/index.tsx
|
|
2942
|
-
var
|
|
2709
|
+
var import_react18 = require("react");
|
|
2943
2710
|
|
|
2944
2711
|
// src/assets/icon/ProfileIcon.tsx
|
|
2945
|
-
var
|
|
2712
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
2946
2713
|
function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
2947
|
-
return /* @__PURE__ */ (0,
|
|
2948
|
-
/* @__PURE__ */ (0,
|
|
2714
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
2715
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
2949
2716
|
"path",
|
|
2950
2717
|
{
|
|
2951
2718
|
fillRule: "evenodd",
|
|
@@ -2954,7 +2721,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
2954
2721
|
fill: color
|
|
2955
2722
|
}
|
|
2956
2723
|
),
|
|
2957
|
-
/* @__PURE__ */ (0,
|
|
2724
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
2958
2725
|
"path",
|
|
2959
2726
|
{
|
|
2960
2727
|
fillRule: "evenodd",
|
|
@@ -2968,10 +2735,10 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
2968
2735
|
|
|
2969
2736
|
// src/components/UserPopover/index.tsx
|
|
2970
2737
|
var import_react_intl10 = require("react-intl");
|
|
2971
|
-
var
|
|
2738
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
2972
2739
|
function UserContent() {
|
|
2973
2740
|
const { logout, address, username } = useUserInfo();
|
|
2974
|
-
const [logouting, setLogouting] = (0,
|
|
2741
|
+
const [logouting, setLogouting] = (0, import_react18.useState)(false);
|
|
2975
2742
|
const onLogout = async () => {
|
|
2976
2743
|
if (logouting) return;
|
|
2977
2744
|
try {
|
|
@@ -2989,34 +2756,34 @@ function UserContent() {
|
|
|
2989
2756
|
rightIcon,
|
|
2990
2757
|
onClick
|
|
2991
2758
|
}) => {
|
|
2992
|
-
return /* @__PURE__ */ (0,
|
|
2993
|
-
/* @__PURE__ */ (0,
|
|
2759
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-user-popover-item", onClick, children: [
|
|
2760
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `matchid-user-popover-item-content`, children: [
|
|
2994
2761
|
icon,
|
|
2995
|
-
/* @__PURE__ */ (0,
|
|
2762
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-user-popover-item-text", children })
|
|
2996
2763
|
] }),
|
|
2997
2764
|
rightIcon
|
|
2998
2765
|
] });
|
|
2999
2766
|
};
|
|
3000
2767
|
const UserDivider = () => {
|
|
3001
|
-
return /* @__PURE__ */ (0,
|
|
2768
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: `matchid-user-popover-divider` });
|
|
3002
2769
|
};
|
|
3003
|
-
const [usernameOpen, setUsernameOpen] = (0,
|
|
2770
|
+
const [usernameOpen, setUsernameOpen] = (0, import_react18.useState)(false);
|
|
3004
2771
|
const [copied, setCopied] = useCopyClipboard();
|
|
3005
2772
|
const intl = (0, import_react_intl10.useIntl)();
|
|
3006
|
-
return /* @__PURE__ */ (0,
|
|
3007
|
-
/* @__PURE__ */ (0,
|
|
3008
|
-
/* @__PURE__ */ (0,
|
|
2773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-user-popover-content", children: [
|
|
2774
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-user-popover-list", children: [
|
|
2775
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(UserItem, { onClick: () => {
|
|
3009
2776
|
setCopied(address);
|
|
3010
|
-
}, icon: copied ? /* @__PURE__ */ (0,
|
|
3011
|
-
/* @__PURE__ */ (0,
|
|
3012
|
-
/* @__PURE__ */ (0,
|
|
2777
|
+
}, icon: copied ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
|
|
2778
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(UserDivider, {}),
|
|
2779
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(UserItem, { onClick: () => {
|
|
3013
2780
|
setUsernameOpen(true);
|
|
3014
|
-
}, icon: /* @__PURE__ */ (0,
|
|
2781
|
+
}, icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
|
|
3015
2782
|
id: "setUsername"
|
|
3016
2783
|
}) })
|
|
3017
2784
|
] }),
|
|
3018
|
-
/* @__PURE__ */ (0,
|
|
3019
|
-
/* @__PURE__ */ (0,
|
|
2785
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_intl10.FormattedMessage, { id: "disconnect" }) }),
|
|
2786
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(UsernameModal, { isOpen: usernameOpen, onClose: () => {
|
|
3020
2787
|
setUsernameOpen(false);
|
|
3021
2788
|
}, onSuccess: () => {
|
|
3022
2789
|
setUsernameOpen(false);
|
|
@@ -3027,12 +2794,12 @@ function UserPopover({
|
|
|
3027
2794
|
children,
|
|
3028
2795
|
...props
|
|
3029
2796
|
}) {
|
|
3030
|
-
return /* @__PURE__ */ (0,
|
|
2797
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Popover, { ...props, content: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(UserContent, {}), children });
|
|
3031
2798
|
}
|
|
3032
2799
|
|
|
3033
2800
|
// src/components/LoginButton/index.tsx
|
|
3034
2801
|
var import_react_intl11 = require("react-intl");
|
|
3035
|
-
var
|
|
2802
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
3036
2803
|
function LoginButton({
|
|
3037
2804
|
loginRender,
|
|
3038
2805
|
methods,
|
|
@@ -3046,10 +2813,10 @@ function LoginButton({
|
|
|
3046
2813
|
}) {
|
|
3047
2814
|
const intl = (0, import_react_intl11.useIntl)();
|
|
3048
2815
|
const { isLogin, username } = useUserInfo();
|
|
3049
|
-
const [loginOpen, setLoginOpen] = (0,
|
|
2816
|
+
const [loginOpen, setLoginOpen] = (0, import_react19.useState)(false);
|
|
3050
2817
|
if (!isLogin) {
|
|
3051
|
-
return /* @__PURE__ */ (0,
|
|
3052
|
-
/* @__PURE__ */ (0,
|
|
2818
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
|
|
2819
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
3053
2820
|
LoginModal,
|
|
3054
2821
|
{
|
|
3055
2822
|
methods,
|
|
@@ -3059,32 +2826,32 @@ function LoginButton({
|
|
|
3059
2826
|
onClose: () => setLoginOpen(false)
|
|
3060
2827
|
}
|
|
3061
2828
|
),
|
|
3062
|
-
/* @__PURE__ */ (0,
|
|
3063
|
-
/* @__PURE__ */ (0,
|
|
3064
|
-
/* @__PURE__ */ (0,
|
|
2829
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
|
|
2830
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(UnLoginIcon_default, {}),
|
|
2831
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_intl11.FormattedMessage, { id: "login" }) })
|
|
3065
2832
|
] })
|
|
3066
2833
|
] });
|
|
3067
2834
|
}
|
|
3068
|
-
return loginRender ? /* @__PURE__ */ (0,
|
|
3069
|
-
/* @__PURE__ */ (0,
|
|
3070
|
-
/* @__PURE__ */ (0,
|
|
2835
|
+
return loginRender ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_jsx_runtime63.Fragment, { children: loginRender }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
|
|
2836
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LoginIcon_default, {}),
|
|
2837
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
|
|
3071
2838
|
id: "user"
|
|
3072
2839
|
}) })
|
|
3073
2840
|
] }) });
|
|
3074
2841
|
}
|
|
3075
2842
|
|
|
3076
2843
|
// src/components/UsernameModal/index.tsx
|
|
3077
|
-
var
|
|
2844
|
+
var import_react20 = require("react");
|
|
3078
2845
|
|
|
3079
2846
|
// src/assets/icon/InfoRoundIcon.tsx
|
|
3080
|
-
var
|
|
2847
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
3081
2848
|
function InfoRoundIcon({
|
|
3082
2849
|
size,
|
|
3083
2850
|
color = "#6E6E6E",
|
|
3084
2851
|
...props
|
|
3085
2852
|
}) {
|
|
3086
|
-
return /* @__PURE__ */ (0,
|
|
3087
|
-
/* @__PURE__ */ (0,
|
|
2853
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
|
|
2854
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
3088
2855
|
"path",
|
|
3089
2856
|
{
|
|
3090
2857
|
fillRule: "evenodd",
|
|
@@ -3093,21 +2860,21 @@ function InfoRoundIcon({
|
|
|
3093
2860
|
fill: color
|
|
3094
2861
|
}
|
|
3095
2862
|
) }),
|
|
3096
|
-
/* @__PURE__ */ (0,
|
|
2863
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
3097
2864
|
] });
|
|
3098
2865
|
}
|
|
3099
2866
|
|
|
3100
2867
|
// src/components/UsernameModal/index.tsx
|
|
3101
2868
|
var import_react_intl12 = require("react-intl");
|
|
3102
|
-
var
|
|
2869
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
3103
2870
|
var ValidItem = ({
|
|
3104
2871
|
success = false,
|
|
3105
2872
|
text
|
|
3106
2873
|
}) => {
|
|
3107
2874
|
const isDownMd = useDownMd();
|
|
3108
|
-
return /* @__PURE__ */ (0,
|
|
3109
|
-
success ? /* @__PURE__ */ (0,
|
|
3110
|
-
/* @__PURE__ */ (0,
|
|
2875
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
|
|
2876
|
+
success ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
|
|
2877
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { children: text })
|
|
3111
2878
|
] });
|
|
3112
2879
|
};
|
|
3113
2880
|
function UsernameModal({
|
|
@@ -3118,23 +2885,23 @@ function UsernameModal({
|
|
|
3118
2885
|
}) {
|
|
3119
2886
|
const { username, refreshOverview } = useUserInfo();
|
|
3120
2887
|
const { isLogin } = useUserInfo();
|
|
3121
|
-
const [val, setVal] = (0,
|
|
3122
|
-
const [error, setError] = (0,
|
|
2888
|
+
const [val, setVal] = (0, import_react20.useState)(username);
|
|
2889
|
+
const [error, setError] = (0, import_react20.useState)("");
|
|
3123
2890
|
const isDownMd = useDownMd();
|
|
3124
|
-
(0,
|
|
2891
|
+
(0, import_react20.useEffect)(() => {
|
|
3125
2892
|
if (isOpen) {
|
|
3126
2893
|
setVal(username);
|
|
3127
2894
|
setError("");
|
|
3128
2895
|
}
|
|
3129
2896
|
}, [isOpen]);
|
|
3130
|
-
const isValid = (0,
|
|
2897
|
+
const isValid = (0, import_react20.useMemo)(() => {
|
|
3131
2898
|
return isValidUsername(val);
|
|
3132
2899
|
}, [val]);
|
|
3133
|
-
const isLength = (0,
|
|
2900
|
+
const isLength = (0, import_react20.useMemo)(() => {
|
|
3134
2901
|
return val.length >= 2 && val.length <= 32;
|
|
3135
2902
|
}, [val]);
|
|
3136
2903
|
const isSafe = isValid && isLength;
|
|
3137
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
2904
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react20.useState)(false);
|
|
3138
2905
|
const onSubmit = async () => {
|
|
3139
2906
|
if (isSubmitting) return;
|
|
3140
2907
|
try {
|
|
@@ -3155,12 +2922,12 @@ function UsernameModal({
|
|
|
3155
2922
|
}
|
|
3156
2923
|
};
|
|
3157
2924
|
const intl = (0, import_react_intl12.useIntl)();
|
|
3158
|
-
return /* @__PURE__ */ (0,
|
|
2925
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
3159
2926
|
id: username ? "editUsernameTitle" : "setUsernameTitle"
|
|
3160
|
-
}), children: /* @__PURE__ */ (0,
|
|
3161
|
-
/* @__PURE__ */ (0,
|
|
2927
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "matchid-username-box", children: [
|
|
2928
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Field, { label: intl.formatMessage({
|
|
3162
2929
|
id: "username"
|
|
3163
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
2930
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
3164
2931
|
Input,
|
|
3165
2932
|
{
|
|
3166
2933
|
placeholder: intl.formatMessage({
|
|
@@ -3173,8 +2940,8 @@ function UsernameModal({
|
|
|
3173
2940
|
value: val
|
|
3174
2941
|
}
|
|
3175
2942
|
) }),
|
|
3176
|
-
/* @__PURE__ */ (0,
|
|
3177
|
-
/* @__PURE__ */ (0,
|
|
2943
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "matchid-valid", children: [
|
|
2944
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
3178
2945
|
ValidItem,
|
|
3179
2946
|
{
|
|
3180
2947
|
success: isValid,
|
|
@@ -3183,21 +2950,21 @@ function UsernameModal({
|
|
|
3183
2950
|
})
|
|
3184
2951
|
}
|
|
3185
2952
|
),
|
|
3186
|
-
/* @__PURE__ */ (0,
|
|
2953
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(ValidItem, { success: isLength, text: intl.formatMessage({
|
|
3187
2954
|
id: "usernameLengthError"
|
|
3188
2955
|
}) })
|
|
3189
2956
|
] }),
|
|
3190
|
-
/* @__PURE__ */ (0,
|
|
2957
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { disabled: !isSafe, loading: isSubmitting, style: {
|
|
3191
2958
|
marginTop: isDownMd ? "36px" : "64px"
|
|
3192
|
-
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
3193
|
-
/* @__PURE__ */ (0,
|
|
2959
|
+
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_intl12.FormattedMessage, { id: "confirm" }) }),
|
|
2960
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { style: {
|
|
3194
2961
|
marginTop: isDownMd ? "12px" : "24px"
|
|
3195
|
-
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0,
|
|
2962
|
+
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_intl12.FormattedMessage, { id: "cancel" }) })
|
|
3196
2963
|
] }) });
|
|
3197
2964
|
}
|
|
3198
2965
|
|
|
3199
2966
|
// src/components/SOLModal/index.tsx
|
|
3200
|
-
var
|
|
2967
|
+
var import_react22 = __toESM(require("react"));
|
|
3201
2968
|
var import_web3 = require("@solana/web3.js");
|
|
3202
2969
|
var import_wallet_adapter_react = require("@solana/wallet-adapter-react");
|
|
3203
2970
|
var import_wallet_adapter_react_ui = require("@solana/wallet-adapter-react-ui");
|
|
@@ -3216,7 +2983,7 @@ var import_styles = require("@solana/wallet-adapter-react-ui/styles.css");
|
|
|
3216
2983
|
var import_react_intl13 = require("react-intl");
|
|
3217
2984
|
|
|
3218
2985
|
// src/components/WalletModalContent/index.tsx
|
|
3219
|
-
var
|
|
2986
|
+
var import_react21 = require("react");
|
|
3220
2987
|
|
|
3221
2988
|
// src/assets/wallet.ts
|
|
3222
2989
|
var walletErrorImage = "data:image/png;base64,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";
|
|
@@ -3226,7 +2993,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
3226
2993
|
var walletSigningImage = "data:image/png;base64,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";
|
|
3227
2994
|
|
|
3228
2995
|
// src/components/WalletModalContent/index.tsx
|
|
3229
|
-
var
|
|
2996
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
3230
2997
|
function WalletModalContent({
|
|
3231
2998
|
status,
|
|
3232
2999
|
error,
|
|
@@ -3237,7 +3004,7 @@ function WalletModalContent({
|
|
|
3237
3004
|
address,
|
|
3238
3005
|
connected
|
|
3239
3006
|
}) {
|
|
3240
|
-
const pageData = (0,
|
|
3007
|
+
const pageData = (0, import_react21.useMemo)(() => {
|
|
3241
3008
|
if (status == "success") {
|
|
3242
3009
|
return {
|
|
3243
3010
|
btnText: "Disconnect Wallet",
|
|
@@ -3296,12 +3063,12 @@ function WalletModalContent({
|
|
|
3296
3063
|
statusImage: walletConnectImage
|
|
3297
3064
|
};
|
|
3298
3065
|
}, [visible, connected, status, error, address]);
|
|
3299
|
-
return /* @__PURE__ */ (0,
|
|
3300
|
-
/* @__PURE__ */ (0,
|
|
3301
|
-
/* @__PURE__ */ (0,
|
|
3302
|
-
/* @__PURE__ */ (0,
|
|
3066
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: `matchid-wallet-box`, children: [
|
|
3067
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: `matchid-wallet-content`, children: [
|
|
3068
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("img", { src: pageData.statusImage }),
|
|
3069
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
|
|
3303
3070
|
] }),
|
|
3304
|
-
/* @__PURE__ */ (0,
|
|
3071
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
3305
3072
|
Button,
|
|
3306
3073
|
{
|
|
3307
3074
|
block: true,
|
|
@@ -3316,7 +3083,7 @@ function WalletModalContent({
|
|
|
3316
3083
|
}
|
|
3317
3084
|
|
|
3318
3085
|
// src/components/SOLModal/index.tsx
|
|
3319
|
-
var
|
|
3086
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
3320
3087
|
function WalletContent({
|
|
3321
3088
|
onSuccess,
|
|
3322
3089
|
type
|
|
@@ -3324,17 +3091,17 @@ function WalletContent({
|
|
|
3324
3091
|
const { setVisible, visible } = (0, import_wallet_adapter_react_ui.useWalletModal)();
|
|
3325
3092
|
const wallet = (0, import_wallet_adapter_react.useWallet)();
|
|
3326
3093
|
const { events, login } = useMatch();
|
|
3327
|
-
const [status, setStatus] = (0,
|
|
3328
|
-
const statusRef =
|
|
3329
|
-
const [error, setError] = (0,
|
|
3330
|
-
(0,
|
|
3094
|
+
const [status, setStatus] = (0, import_react22.useState)("");
|
|
3095
|
+
const statusRef = import_react22.default.useRef(status);
|
|
3096
|
+
const [error, setError] = (0, import_react22.useState)("");
|
|
3097
|
+
(0, import_react22.useEffect)(() => {
|
|
3331
3098
|
const init = async () => {
|
|
3332
3099
|
await wallet.disconnect();
|
|
3333
3100
|
setVisible(true);
|
|
3334
3101
|
};
|
|
3335
3102
|
init();
|
|
3336
3103
|
}, []);
|
|
3337
|
-
(0,
|
|
3104
|
+
(0, import_react22.useEffect)(() => {
|
|
3338
3105
|
if (wallet.connected) {
|
|
3339
3106
|
console.log("wallet.connected", wallet.connected);
|
|
3340
3107
|
toLoginInWallet();
|
|
@@ -3346,10 +3113,7 @@ function WalletContent({
|
|
|
3346
3113
|
try {
|
|
3347
3114
|
setStatus("nonce");
|
|
3348
3115
|
statusRef.current = "nonce";
|
|
3349
|
-
const res = type == "bind" ? await getWalletInitApi({
|
|
3350
|
-
address,
|
|
3351
|
-
type: "SOL"
|
|
3352
|
-
}) : await getWalletNonceApi({ address, type: "SOL" });
|
|
3116
|
+
const res = type == "bind" ? await getWalletInitApi({ address, type: "SOL" }) : await getWalletNonceApi({ address, type: "SOL" });
|
|
3353
3117
|
if (!isSuccess(res)) {
|
|
3354
3118
|
throw new Error(res.message);
|
|
3355
3119
|
}
|
|
@@ -3398,7 +3162,7 @@ function WalletContent({
|
|
|
3398
3162
|
statusRef.current = "";
|
|
3399
3163
|
}
|
|
3400
3164
|
};
|
|
3401
|
-
return /* @__PURE__ */ (0,
|
|
3165
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
3402
3166
|
WalletModalContent,
|
|
3403
3167
|
{
|
|
3404
3168
|
connected: wallet.connected,
|
|
@@ -3453,24 +3217,21 @@ var wallets = [
|
|
|
3453
3217
|
new import_wallet_adapter_wallets.TrustWalletAdapter(),
|
|
3454
3218
|
new import_wallet_adapter_wallets.XDEFIWalletAdapter()
|
|
3455
3219
|
];
|
|
3456
|
-
function
|
|
3220
|
+
function SOLModal({
|
|
3457
3221
|
type = "login",
|
|
3458
3222
|
onSuccess,
|
|
3459
3223
|
...props
|
|
3460
3224
|
}) {
|
|
3461
3225
|
const intl = (0, import_react_intl13.useIntl)();
|
|
3462
|
-
return /* @__PURE__ */ (0,
|
|
3226
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3463
3227
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3464
3228
|
}, {
|
|
3465
3229
|
name: "SOL"
|
|
3466
|
-
}), children: /* @__PURE__ */ (0,
|
|
3467
|
-
}
|
|
3468
|
-
function SOLModal(props) {
|
|
3469
|
-
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(SOLConnectModal, { ...props });
|
|
3230
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_wallet_adapter_react.ConnectionProvider, { endpoint: (0, import_web3.clusterApiUrl)("devnet"), children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_wallet_adapter_react.WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_wallet_adapter_react_ui.WalletModalProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(WalletContent, { onSuccess, type }) }) }) }) });
|
|
3470
3231
|
}
|
|
3471
3232
|
|
|
3472
3233
|
// src/components/TRONModal/index.tsx
|
|
3473
|
-
var
|
|
3234
|
+
var import_react24 = __toESM(require("react"));
|
|
3474
3235
|
var import_react_intl14 = require("react-intl");
|
|
3475
3236
|
|
|
3476
3237
|
// src/lib/tron/TronLinkAdapter.ts
|
|
@@ -3504,7 +3265,7 @@ var TronLinkAdapter = class {
|
|
|
3504
3265
|
};
|
|
3505
3266
|
|
|
3506
3267
|
// src/hooks/useTRONWallet.ts
|
|
3507
|
-
var
|
|
3268
|
+
var import_react23 = require("react");
|
|
3508
3269
|
|
|
3509
3270
|
// src/lib/tron/BitgetAdapter.ts
|
|
3510
3271
|
var BitgetAdapter = class {
|
|
@@ -3549,9 +3310,9 @@ var OKXAdapter = class {
|
|
|
3549
3310
|
// src/hooks/useTRONWallet.ts
|
|
3550
3311
|
var useTRONWallet = () => {
|
|
3551
3312
|
const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
3552
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
3553
|
-
const [address, setAddress] = (0,
|
|
3554
|
-
(0,
|
|
3313
|
+
const [installedWallets, setInstalledWallets] = (0, import_react23.useState)([]);
|
|
3314
|
+
const [address, setAddress] = (0, import_react23.useState)(null);
|
|
3315
|
+
(0, import_react23.useEffect)(() => {
|
|
3555
3316
|
const getInstalled = async () => {
|
|
3556
3317
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
3557
3318
|
wallet: wallet2,
|
|
@@ -3561,11 +3322,11 @@ var useTRONWallet = () => {
|
|
|
3561
3322
|
};
|
|
3562
3323
|
getInstalled();
|
|
3563
3324
|
}, []);
|
|
3564
|
-
const [wallet, chooseWallet] = (0,
|
|
3325
|
+
const [wallet, chooseWallet] = (0, import_react23.useState)(null);
|
|
3565
3326
|
const onConnect = async () => {
|
|
3566
3327
|
setAddress(await wallet.connect());
|
|
3567
3328
|
};
|
|
3568
|
-
(0,
|
|
3329
|
+
(0, import_react23.useEffect)(() => {
|
|
3569
3330
|
if (!wallet) {
|
|
3570
3331
|
setAddress(null);
|
|
3571
3332
|
}
|
|
@@ -3581,8 +3342,8 @@ var useTRONWallet = () => {
|
|
|
3581
3342
|
};
|
|
3582
3343
|
|
|
3583
3344
|
// src/components/TRONModal/index.tsx
|
|
3584
|
-
var
|
|
3585
|
-
function
|
|
3345
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
3346
|
+
function TRONModal({
|
|
3586
3347
|
type = "login",
|
|
3587
3348
|
onSuccess,
|
|
3588
3349
|
...props
|
|
@@ -3591,15 +3352,15 @@ function TRONConnectModal({
|
|
|
3591
3352
|
const intl = (0, import_react_intl14.useIntl)();
|
|
3592
3353
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useTRONWallet();
|
|
3593
3354
|
const iconMaps = {
|
|
3594
|
-
tronlink: /* @__PURE__ */ (0,
|
|
3595
|
-
bitget: /* @__PURE__ */ (0,
|
|
3596
|
-
okx: /* @__PURE__ */ (0,
|
|
3355
|
+
tronlink: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
|
|
3356
|
+
bitget: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(BitgetIcon, { size: isDownMd ? 36 : 40 }),
|
|
3357
|
+
okx: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
3597
3358
|
};
|
|
3598
3359
|
const { events, login } = useMatch();
|
|
3599
|
-
const [status, setStatus] = (0,
|
|
3600
|
-
const statusRef =
|
|
3601
|
-
const [error, setError] = (0,
|
|
3602
|
-
const connected = (0,
|
|
3360
|
+
const [status, setStatus] = (0, import_react24.useState)("");
|
|
3361
|
+
const statusRef = import_react24.default.useRef(status);
|
|
3362
|
+
const [error, setError] = (0, import_react24.useState)("");
|
|
3363
|
+
const connected = (0, import_react24.useMemo)(() => {
|
|
3603
3364
|
return !!address;
|
|
3604
3365
|
}, [address]);
|
|
3605
3366
|
const disconnect = async () => {
|
|
@@ -3667,7 +3428,7 @@ function TRONConnectModal({
|
|
|
3667
3428
|
statusRef.current = "";
|
|
3668
3429
|
}
|
|
3669
3430
|
};
|
|
3670
|
-
(0,
|
|
3431
|
+
(0, import_react24.useEffect)(() => {
|
|
3671
3432
|
if (wallet) {
|
|
3672
3433
|
console.log("onConnect");
|
|
3673
3434
|
onConnect();
|
|
@@ -3675,21 +3436,21 @@ function TRONConnectModal({
|
|
|
3675
3436
|
setStatus("");
|
|
3676
3437
|
}
|
|
3677
3438
|
}, [wallet]);
|
|
3678
|
-
(0,
|
|
3439
|
+
(0, import_react24.useEffect)(() => {
|
|
3679
3440
|
if (address) {
|
|
3680
3441
|
toLoginInWallet();
|
|
3681
3442
|
}
|
|
3682
3443
|
}, [address]);
|
|
3683
|
-
(0,
|
|
3444
|
+
(0, import_react24.useEffect)(() => {
|
|
3684
3445
|
if (!props.isOpen) {
|
|
3685
3446
|
disconnect();
|
|
3686
3447
|
}
|
|
3687
3448
|
}, [props.isOpen]);
|
|
3688
|
-
return /* @__PURE__ */ (0,
|
|
3449
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3689
3450
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3690
3451
|
}, {
|
|
3691
3452
|
name: "TRON"
|
|
3692
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
3453
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
3693
3454
|
WalletModalContent,
|
|
3694
3455
|
{
|
|
3695
3456
|
error,
|
|
@@ -3702,9 +3463,9 @@ function TRONConnectModal({
|
|
|
3702
3463
|
setVisible: () => {
|
|
3703
3464
|
}
|
|
3704
3465
|
}
|
|
3705
|
-
) : /* @__PURE__ */ (0,
|
|
3466
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "matchid-login-recommend-list", children: [
|
|
3706
3467
|
installedWallets.map((wallet2) => {
|
|
3707
|
-
return /* @__PURE__ */ (0,
|
|
3468
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
3708
3469
|
RecommendItem,
|
|
3709
3470
|
{
|
|
3710
3471
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -3717,14 +3478,14 @@ function TRONConnectModal({
|
|
|
3717
3478
|
);
|
|
3718
3479
|
}),
|
|
3719
3480
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
3720
|
-
return /* @__PURE__ */ (0,
|
|
3481
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
3721
3482
|
RecommendItem,
|
|
3722
3483
|
{
|
|
3723
3484
|
icon: iconMaps[wallet2.walletKey],
|
|
3724
3485
|
name: wallet2.name,
|
|
3725
3486
|
onClick: () => {
|
|
3726
3487
|
},
|
|
3727
|
-
footer: /* @__PURE__ */ (0,
|
|
3488
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Button, { size: "sm", onClick: () => {
|
|
3728
3489
|
window.open(wallet2.website);
|
|
3729
3490
|
}, children: "Install" })
|
|
3730
3491
|
},
|
|
@@ -3733,29 +3494,26 @@ function TRONConnectModal({
|
|
|
3733
3494
|
})
|
|
3734
3495
|
] }) }) });
|
|
3735
3496
|
}
|
|
3736
|
-
function TRONModal(props) {
|
|
3737
|
-
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(TRONConnectModal, { ...props, type: "" });
|
|
3738
|
-
}
|
|
3739
3497
|
|
|
3740
3498
|
// src/components/TONModal/index.tsx
|
|
3741
|
-
var
|
|
3499
|
+
var import_react25 = __toESM(require("react"));
|
|
3742
3500
|
var import_react_intl15 = require("react-intl");
|
|
3743
3501
|
var import_ui_react = require("@tonconnect/ui-react");
|
|
3744
|
-
var
|
|
3502
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
3745
3503
|
function WalletContent2({
|
|
3746
3504
|
onSuccess,
|
|
3747
3505
|
type
|
|
3748
3506
|
}) {
|
|
3749
3507
|
const { events, login } = useMatch();
|
|
3750
|
-
const [connected, setConnected] = (0,
|
|
3508
|
+
const [connected, setConnected] = (0, import_react25.useState)(false);
|
|
3751
3509
|
const wallet = (0, import_ui_react.useTonWallet)();
|
|
3752
3510
|
const userFriendlyAddress = (0, import_ui_react.useTonAddress)();
|
|
3753
3511
|
const [tonConnectUI] = (0, import_ui_react.useTonConnectUI)();
|
|
3754
3512
|
const { state, open, close } = (0, import_ui_react.useTonConnectModal)();
|
|
3755
|
-
const [status, setStatus] = (0,
|
|
3756
|
-
const statusRef =
|
|
3757
|
-
const [error, setError] = (0,
|
|
3758
|
-
(0,
|
|
3513
|
+
const [status, setStatus] = (0, import_react25.useState)("");
|
|
3514
|
+
const statusRef = import_react25.default.useRef(status);
|
|
3515
|
+
const [error, setError] = (0, import_react25.useState)("");
|
|
3516
|
+
(0, import_react25.useEffect)(() => {
|
|
3759
3517
|
const init = async () => {
|
|
3760
3518
|
if (wallet) {
|
|
3761
3519
|
await tonConnectUI.disconnect();
|
|
@@ -3828,7 +3586,7 @@ function WalletContent2({
|
|
|
3828
3586
|
}
|
|
3829
3587
|
});
|
|
3830
3588
|
}, []);
|
|
3831
|
-
(0,
|
|
3589
|
+
(0, import_react25.useEffect)(() => {
|
|
3832
3590
|
if (wallet) {
|
|
3833
3591
|
setConnected(true);
|
|
3834
3592
|
console.log("Wallet connected:", wallet);
|
|
@@ -3839,7 +3597,7 @@ function WalletContent2({
|
|
|
3839
3597
|
setStatus("");
|
|
3840
3598
|
}
|
|
3841
3599
|
}, [wallet]);
|
|
3842
|
-
(0,
|
|
3600
|
+
(0, import_react25.useEffect)(() => {
|
|
3843
3601
|
console.log({
|
|
3844
3602
|
state,
|
|
3845
3603
|
wallet
|
|
@@ -3868,7 +3626,7 @@ function WalletContent2({
|
|
|
3868
3626
|
}
|
|
3869
3627
|
}
|
|
3870
3628
|
}, [state]);
|
|
3871
|
-
return /* @__PURE__ */ (0,
|
|
3629
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
3872
3630
|
WalletModalContent,
|
|
3873
3631
|
{
|
|
3874
3632
|
connected,
|
|
@@ -3894,7 +3652,7 @@ function WalletContent2({
|
|
|
3894
3652
|
}
|
|
3895
3653
|
);
|
|
3896
3654
|
}
|
|
3897
|
-
function
|
|
3655
|
+
function TONModal({
|
|
3898
3656
|
type = "login",
|
|
3899
3657
|
onSuccess,
|
|
3900
3658
|
...props
|
|
@@ -3902,24 +3660,21 @@ function TONConnectModal({
|
|
|
3902
3660
|
const intl = (0, import_react_intl15.useIntl)();
|
|
3903
3661
|
const { endpoints, appid } = useLocalStore_default();
|
|
3904
3662
|
const manifestUrl = `${endpoints.back}api/v1/wallet/ton?appid=${appid}&url=` + encodeURIComponent(window.location.origin);
|
|
3905
|
-
return /* @__PURE__ */ (0,
|
|
3663
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3906
3664
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3907
3665
|
}, {
|
|
3908
3666
|
name: "TON"
|
|
3909
|
-
}), children: /* @__PURE__ */ (0,
|
|
3667
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
3910
3668
|
import_ui_react.TonConnectUIProvider,
|
|
3911
3669
|
{
|
|
3912
3670
|
manifestUrl,
|
|
3913
|
-
children: /* @__PURE__ */ (0,
|
|
3671
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(WalletContent2, { onSuccess, type })
|
|
3914
3672
|
}
|
|
3915
3673
|
) });
|
|
3916
3674
|
}
|
|
3917
|
-
function TONModal(props) {
|
|
3918
|
-
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(TONConnectModal, { ...props });
|
|
3919
|
-
}
|
|
3920
3675
|
|
|
3921
3676
|
// src/components/BTCModal/index.tsx
|
|
3922
|
-
var
|
|
3677
|
+
var import_react27 = __toESM(require("react"));
|
|
3923
3678
|
var import_react_intl16 = require("react-intl");
|
|
3924
3679
|
|
|
3925
3680
|
// src/lib/btc/UnisatAdapter.ts
|
|
@@ -3991,7 +3746,7 @@ var XverseAdapter = class {
|
|
|
3991
3746
|
}
|
|
3992
3747
|
});
|
|
3993
3748
|
} catch (err) {
|
|
3994
|
-
|
|
3749
|
+
console.error(err);
|
|
3995
3750
|
resolve(false);
|
|
3996
3751
|
}
|
|
3997
3752
|
});
|
|
@@ -4068,12 +3823,12 @@ var LeatherAdapter = class {
|
|
|
4068
3823
|
};
|
|
4069
3824
|
|
|
4070
3825
|
// src/hooks/useBTCWallet.ts
|
|
4071
|
-
var
|
|
3826
|
+
var import_react26 = require("react");
|
|
4072
3827
|
var useBTCWallet = () => {
|
|
4073
3828
|
const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
|
|
4074
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
4075
|
-
const [address, setAddress] = (0,
|
|
4076
|
-
(0,
|
|
3829
|
+
const [installedWallets, setInstalledWallets] = (0, import_react26.useState)([]);
|
|
3830
|
+
const [address, setAddress] = (0, import_react26.useState)(null);
|
|
3831
|
+
(0, import_react26.useEffect)(() => {
|
|
4077
3832
|
const getInstalled = async () => {
|
|
4078
3833
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
4079
3834
|
wallet: wallet2,
|
|
@@ -4083,11 +3838,11 @@ var useBTCWallet = () => {
|
|
|
4083
3838
|
};
|
|
4084
3839
|
getInstalled();
|
|
4085
3840
|
}, []);
|
|
4086
|
-
const [wallet, chooseWallet] = (0,
|
|
3841
|
+
const [wallet, chooseWallet] = (0, import_react26.useState)(null);
|
|
4087
3842
|
const onConnect = async () => {
|
|
4088
3843
|
setAddress(await wallet.connect());
|
|
4089
3844
|
};
|
|
4090
|
-
(0,
|
|
3845
|
+
(0, import_react26.useEffect)(() => {
|
|
4091
3846
|
if (!wallet) {
|
|
4092
3847
|
setAddress(null);
|
|
4093
3848
|
}
|
|
@@ -4103,8 +3858,8 @@ var useBTCWallet = () => {
|
|
|
4103
3858
|
};
|
|
4104
3859
|
|
|
4105
3860
|
// src/components/BTCModal/index.tsx
|
|
4106
|
-
var
|
|
4107
|
-
function
|
|
3861
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
3862
|
+
function BTCModal({
|
|
4108
3863
|
type = "login",
|
|
4109
3864
|
onSuccess,
|
|
4110
3865
|
...props
|
|
@@ -4113,15 +3868,15 @@ function BTCConnectModal({
|
|
|
4113
3868
|
const intl = (0, import_react_intl16.useIntl)();
|
|
4114
3869
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useBTCWallet();
|
|
4115
3870
|
const iconMaps = {
|
|
4116
|
-
leather: /* @__PURE__ */ (0,
|
|
4117
|
-
unisat: /* @__PURE__ */ (0,
|
|
4118
|
-
xverse: /* @__PURE__ */ (0,
|
|
3871
|
+
leather: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(LeatherIcon, { size: isDownMd ? 36 : 40 }),
|
|
3872
|
+
unisat: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(UnisatIcon, { size: isDownMd ? 36 : 40 }),
|
|
3873
|
+
xverse: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(XverseIcon, { size: isDownMd ? 36 : 40 })
|
|
4119
3874
|
};
|
|
4120
3875
|
const { events, login } = useMatch();
|
|
4121
|
-
const [status, setStatus] = (0,
|
|
4122
|
-
const statusRef =
|
|
4123
|
-
const [error, setError] = (0,
|
|
4124
|
-
const connected = (0,
|
|
3876
|
+
const [status, setStatus] = (0, import_react27.useState)("");
|
|
3877
|
+
const statusRef = import_react27.default.useRef(status);
|
|
3878
|
+
const [error, setError] = (0, import_react27.useState)("");
|
|
3879
|
+
const connected = (0, import_react27.useMemo)(() => {
|
|
4125
3880
|
return !!address;
|
|
4126
3881
|
}, [address]);
|
|
4127
3882
|
const disconnect = async () => {
|
|
@@ -4185,7 +3940,7 @@ function BTCConnectModal({
|
|
|
4185
3940
|
statusRef.current = "";
|
|
4186
3941
|
}
|
|
4187
3942
|
};
|
|
4188
|
-
(0,
|
|
3943
|
+
(0, import_react27.useEffect)(() => {
|
|
4189
3944
|
if (wallet) {
|
|
4190
3945
|
console.log("onConnect");
|
|
4191
3946
|
try {
|
|
@@ -4198,12 +3953,12 @@ function BTCConnectModal({
|
|
|
4198
3953
|
setStatus("");
|
|
4199
3954
|
}
|
|
4200
3955
|
}, [wallet]);
|
|
4201
|
-
(0,
|
|
3956
|
+
(0, import_react27.useEffect)(() => {
|
|
4202
3957
|
if (address) {
|
|
4203
3958
|
toLoginInWallet();
|
|
4204
3959
|
}
|
|
4205
3960
|
}, [address]);
|
|
4206
|
-
(0,
|
|
3961
|
+
(0, import_react27.useEffect)(() => {
|
|
4207
3962
|
if (!props.isOpen) {
|
|
4208
3963
|
disconnect();
|
|
4209
3964
|
}
|
|
@@ -4215,11 +3970,11 @@ function BTCConnectModal({
|
|
|
4215
3970
|
statusRef.current = "";
|
|
4216
3971
|
setError("");
|
|
4217
3972
|
};
|
|
4218
|
-
return /* @__PURE__ */ (0,
|
|
3973
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
4219
3974
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
4220
3975
|
}, {
|
|
4221
3976
|
name: "BTC"
|
|
4222
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
3977
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
4223
3978
|
WalletModalContent,
|
|
4224
3979
|
{
|
|
4225
3980
|
error,
|
|
@@ -4232,9 +3987,9 @@ function BTCConnectModal({
|
|
|
4232
3987
|
setVisible: () => {
|
|
4233
3988
|
}
|
|
4234
3989
|
}
|
|
4235
|
-
) : /* @__PURE__ */ (0,
|
|
3990
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "matchid-login-recommend-list", children: [
|
|
4236
3991
|
installedWallets.map((wallet2) => {
|
|
4237
|
-
return /* @__PURE__ */ (0,
|
|
3992
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
4238
3993
|
RecommendItem,
|
|
4239
3994
|
{
|
|
4240
3995
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -4247,14 +4002,14 @@ function BTCConnectModal({
|
|
|
4247
4002
|
);
|
|
4248
4003
|
}),
|
|
4249
4004
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
4250
|
-
return /* @__PURE__ */ (0,
|
|
4005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
4251
4006
|
RecommendItem,
|
|
4252
4007
|
{
|
|
4253
4008
|
icon: iconMaps[wallet2.walletKey],
|
|
4254
4009
|
name: wallet2.name,
|
|
4255
4010
|
onClick: () => {
|
|
4256
4011
|
},
|
|
4257
|
-
footer: /* @__PURE__ */ (0,
|
|
4012
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Button, { size: "sm", onClick: () => {
|
|
4258
4013
|
window.open(wallet2.website);
|
|
4259
4014
|
}, children: "Install" })
|
|
4260
4015
|
},
|
|
@@ -4263,43 +4018,6 @@ function BTCConnectModal({
|
|
|
4263
4018
|
})
|
|
4264
4019
|
] }) }) });
|
|
4265
4020
|
}
|
|
4266
|
-
function BTCModal(props) {
|
|
4267
|
-
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(BTCConnectModal, { ...props });
|
|
4268
|
-
}
|
|
4269
|
-
|
|
4270
|
-
// src/components/WalletModal/index.tsx
|
|
4271
|
-
var import_react_intl17 = require("react-intl");
|
|
4272
|
-
var import_jsx_runtime76 = require("react/jsx-runtime");
|
|
4273
|
-
function WalletConnectModal({
|
|
4274
|
-
type,
|
|
4275
|
-
methods = DEFAULT_WALLET_METHODS,
|
|
4276
|
-
...props
|
|
4277
|
-
}) {
|
|
4278
|
-
const intl = (0, import_react_intl17.useIntl)();
|
|
4279
|
-
const { walletMap } = useWalletConfig();
|
|
4280
|
-
const { bind, login } = useUserInfo();
|
|
4281
|
-
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
4282
|
-
id: type == "bind" ? "bindWith" : "loginWith"
|
|
4283
|
-
}, {
|
|
4284
|
-
name: ""
|
|
4285
|
-
}), children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "matchid-login-recommend-list", children: methods.map((method, index) => {
|
|
4286
|
-
const m = walletMap[method];
|
|
4287
|
-
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
|
|
4288
|
-
RecommendItem,
|
|
4289
|
-
{
|
|
4290
|
-
icon: m?.icon,
|
|
4291
|
-
name: m?.name,
|
|
4292
|
-
onClick: () => {
|
|
4293
|
-
type == "bind" ? bind(method) : login(method);
|
|
4294
|
-
}
|
|
4295
|
-
},
|
|
4296
|
-
method
|
|
4297
|
-
);
|
|
4298
|
-
}) }) }) });
|
|
4299
|
-
}
|
|
4300
|
-
function WalletModal(props) {
|
|
4301
|
-
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(WalletConnectModal, { ...props });
|
|
4302
|
-
}
|
|
4303
4021
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4304
4022
|
0 && (module.exports = {
|
|
4305
4023
|
BTCModal,
|
|
@@ -4313,13 +4031,11 @@ function WalletModal(props) {
|
|
|
4313
4031
|
LoginPanel,
|
|
4314
4032
|
Modal,
|
|
4315
4033
|
ModalWithHeader,
|
|
4316
|
-
Overlay,
|
|
4317
4034
|
PasswordModal,
|
|
4318
4035
|
Popover,
|
|
4319
4036
|
SOLModal,
|
|
4320
4037
|
TONModal,
|
|
4321
4038
|
TRONModal,
|
|
4322
|
-
UsernameModal
|
|
4323
|
-
WalletModal
|
|
4039
|
+
UsernameModal
|
|
4324
4040
|
});
|
|
4325
4041
|
//# sourceMappingURL=index.js.map
|