@matchain/matchid-sdk-react 0.1.46-alpha.0 → 0.1.46-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/assets/icon/index.mjs +1 -1
- package/dist/{chunk-VY6Y6PLW.mjs → chunk-3XIGN55C.mjs} +2 -2
- package/dist/chunk-HBOS3RBL.mjs +19 -0
- package/dist/chunk-HBOS3RBL.mjs.map +1 -0
- package/dist/{chunk-DPXMCLYK.mjs → chunk-I62Y5HZS.mjs} +2 -2
- package/dist/{chunk-SQIJR7RA.mjs → chunk-UA6XHZHX.mjs} +2 -14
- package/dist/chunk-UA6XHZHX.mjs.map +1 -0
- package/dist/{chunk-EQ752DLJ.mjs → chunk-V35GNYR2.mjs} +647 -973
- package/dist/chunk-V35GNYR2.mjs.map +1 -0
- package/dist/{chunk-H6M6OSVR.mjs → chunk-VBGOGJ6U.mjs} +48 -48
- package/dist/{chunk-H6M6OSVR.mjs.map → chunk-VBGOGJ6U.mjs.map} +1 -1
- package/dist/{chunk-CNQJUDKT.mjs → chunk-W4ZOHVKA.mjs} +32 -3
- package/dist/chunk-W4ZOHVKA.mjs.map +1 -0
- package/dist/components/index.d.mts +3 -4
- package/dist/components/index.d.ts +3 -4
- package/dist/components/index.js +331 -759
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +4 -6
- package/dist/hooks/api/index.d.mts +2 -2
- package/dist/hooks/api/index.d.ts +2 -2
- package/dist/hooks/api/index.js +215 -231
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +5 -5
- package/dist/hooks/index.d.mts +2 -2
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.js +392 -495
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +4 -4
- package/dist/{index-BXCdzLbc.d.mts → index-B6OKNMN_.d.mts} +1 -1
- package/dist/{index-C_XI1qNB.d.mts → index-Bb5HNcIM.d.mts} +1 -1
- package/dist/{index-DhSoJs_L.d.ts → index-C-l6DIgO.d.mts} +2 -24
- package/dist/{index-DSLYDlMJ.d.ts → index-C76VhJX1.d.ts} +10 -4
- package/dist/{index-RT9tEHMs.d.mts → index-C7ZTBB4_.d.ts} +2 -24
- package/dist/{index-CsHEukeG.d.ts → index-C9lQIgOD.d.ts} +1 -1
- package/dist/{index-DWOnfdeP.d.ts → index-CD6roBbT.d.ts} +4 -12
- package/dist/{index-nqmU7njp.d.mts → index-Ch94kI1m.d.mts} +4 -12
- package/dist/{index-D9-2IgL1.d.ts → index-DHyRhe_l.d.ts} +1 -1
- package/dist/{index-bpGeBrps.d.mts → index-DYy-xBrS.d.mts} +10 -4
- package/dist/{index-BMWq_SVq.d.ts → index-_oiFIWte.d.ts} +1 -1
- package/dist/{index-a9wDsxOI.d.mts → index-oBhm0-55.d.mts} +1 -1
- package/dist/index.css +14 -1
- package/dist/index.d.mts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +2095 -2406
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -8
- package/dist/types/index.d.mts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.mjs +2 -1
- package/dist/{types-Cpmx3fld.d.mts → types-Q3WHZX4Z.d.mts} +1 -0
- package/dist/{types-Cpmx3fld.d.ts → types-Q3WHZX4Z.d.ts} +1 -0
- package/dist/ui/index.d.mts +3 -3
- package/dist/ui/index.d.ts +3 -3
- package/dist/ui/index.js +29 -0
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +5 -3
- package/example/src/pages/UI/components/AlphaAvatar.tsx +11 -0
- package/example/src/pages/UI/index.tsx +2 -0
- package/example/src/pages/User/index.tsx +0 -13
- package/package.json +1 -1
- package/dist/chunk-CNQJUDKT.mjs.map +0 -1
- package/dist/chunk-EQ752DLJ.mjs.map +0 -1
- package/dist/chunk-SQIJR7RA.mjs.map +0 -1
- /package/dist/{chunk-VY6Y6PLW.mjs.map → chunk-3XIGN55C.mjs.map} +0 -0
- /package/dist/{chunk-DPXMCLYK.mjs.map → chunk-I62Y5HZS.mjs.map} +0 -0
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
matchlog_default,
|
|
11
11
|
useDownMd,
|
|
12
12
|
useLayout_exports
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VBGOGJ6U.mjs";
|
|
14
14
|
import {
|
|
15
15
|
ArrowDownIcon,
|
|
16
16
|
ArrowRightIcon,
|
|
@@ -33,7 +33,6 @@ import {
|
|
|
33
33
|
LinkedinIcon,
|
|
34
34
|
LoginIcon_default,
|
|
35
35
|
OKXIcon,
|
|
36
|
-
PasswordRoundIcon,
|
|
37
36
|
SOLDarkIcon,
|
|
38
37
|
SOLLightIcon,
|
|
39
38
|
TRXDarkIcon,
|
|
@@ -48,7 +47,7 @@ import {
|
|
|
48
47
|
XIcon,
|
|
49
48
|
XverseIcon,
|
|
50
49
|
YoutubeIcon
|
|
51
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-I62Y5HZS.mjs";
|
|
52
51
|
import {
|
|
53
52
|
__export
|
|
54
53
|
} from "./chunk-J5LGTIGS.mjs";
|
|
@@ -60,54 +59,12 @@ __export(hooks_exports, {
|
|
|
60
59
|
useLayout: () => useLayout_exports,
|
|
61
60
|
useMatchEvents: () => useMatchEvents,
|
|
62
61
|
useUserInfo: () => useUserInfo,
|
|
63
|
-
useWallet: () =>
|
|
62
|
+
useWallet: () => useWallet2
|
|
64
63
|
});
|
|
65
64
|
|
|
66
65
|
// src/store/useLocalStore.ts
|
|
67
66
|
import { create } from "zustand";
|
|
68
67
|
import { devtools, persist } from "zustand/middleware";
|
|
69
|
-
var persistedState = persist(
|
|
70
|
-
(set) => ({
|
|
71
|
-
appid: "",
|
|
72
|
-
token: "",
|
|
73
|
-
did: "",
|
|
74
|
-
mid: "",
|
|
75
|
-
overview: null,
|
|
76
|
-
theme: "light",
|
|
77
|
-
setOverview: (overview) => set({
|
|
78
|
-
overview,
|
|
79
|
-
address: overview.address,
|
|
80
|
-
did: overview.did,
|
|
81
|
-
mid: overview.mid
|
|
82
|
-
}),
|
|
83
|
-
endpoints: {
|
|
84
|
-
back: "https://api.matchid.ai/",
|
|
85
|
-
auth: "https://auth.matchid.ai/"
|
|
86
|
-
},
|
|
87
|
-
setDid: (did) => set({ did }),
|
|
88
|
-
setToken: (token) => set({ token }),
|
|
89
|
-
setAppid: (appid) => set({ appid }),
|
|
90
|
-
setMid: (mid) => set({ mid }),
|
|
91
|
-
logout: () => set({ token: "", did: "", mid: "", address: "", overview: null }),
|
|
92
|
-
setTheme: (theme) => set({ theme }),
|
|
93
|
-
setEndpoints: (endpoints) => set({ endpoints }),
|
|
94
|
-
address: "",
|
|
95
|
-
setAddress: (address) => set({ address }),
|
|
96
|
-
locale: "en",
|
|
97
|
-
setLocale: (locale) => set({ locale }),
|
|
98
|
-
wallet: {
|
|
99
|
-
type: "UserPasscode"
|
|
100
|
-
},
|
|
101
|
-
setWallet: (wallet) => set({ wallet })
|
|
102
|
-
}),
|
|
103
|
-
{ name: "match-local" }
|
|
104
|
-
);
|
|
105
|
-
var useLocalStore = create(devtools(persistedState));
|
|
106
|
-
var localStore = useLocalStore;
|
|
107
|
-
var useLocalStore_default = useLocalStore;
|
|
108
|
-
|
|
109
|
-
// src/hooks/useUserInfo.tsx
|
|
110
|
-
import { useMemo as useMemo13 } from "react";
|
|
111
68
|
|
|
112
69
|
// src/api/request.ts
|
|
113
70
|
import axios from "axios";
|
|
@@ -432,274 +389,99 @@ var getAppConfigApi = () => {
|
|
|
432
389
|
});
|
|
433
390
|
};
|
|
434
391
|
|
|
435
|
-
// src/
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
392
|
+
// src/store/useLocalStore.ts
|
|
393
|
+
var persistedState = persist(
|
|
394
|
+
(set) => ({
|
|
395
|
+
appid: "",
|
|
396
|
+
token: "",
|
|
397
|
+
did: "",
|
|
398
|
+
mid: "",
|
|
399
|
+
overview: null,
|
|
400
|
+
theme: "light",
|
|
401
|
+
setOverview: (overview) => set({
|
|
402
|
+
overview,
|
|
403
|
+
address: overview.address,
|
|
404
|
+
did: overview.did,
|
|
405
|
+
mid: overview.mid
|
|
406
|
+
}),
|
|
407
|
+
refreshOverview: async () => {
|
|
408
|
+
const res = await getOverviewInfoApi();
|
|
409
|
+
if (res.data) {
|
|
410
|
+
set({ overview: res.data });
|
|
411
|
+
set({ address: res.data.address });
|
|
412
|
+
set({ did: res.data.did });
|
|
413
|
+
set({ mid: res.data.mid });
|
|
414
|
+
}
|
|
453
415
|
},
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
})
|
|
460
|
-
|
|
416
|
+
endpoints: {
|
|
417
|
+
back: "https://api.matchid.ai/",
|
|
418
|
+
auth: "https://auth.matchid.ai/"
|
|
419
|
+
},
|
|
420
|
+
setDid: (did) => set({ did }),
|
|
421
|
+
setToken: (token) => set({ token }),
|
|
422
|
+
setAppid: (appid) => set({ appid }),
|
|
423
|
+
setMid: (mid) => set({ mid }),
|
|
424
|
+
logout: () => set({ token: "", did: "", mid: "", address: "", overview: null }),
|
|
425
|
+
setTheme: (theme) => set({ theme }),
|
|
426
|
+
setEndpoints: (endpoints) => set({ endpoints }),
|
|
427
|
+
address: "",
|
|
428
|
+
setAddress: (address) => set({ address }),
|
|
429
|
+
locale: "en",
|
|
430
|
+
setLocale: (locale) => set({ locale }),
|
|
431
|
+
wallet: {
|
|
432
|
+
type: "UserPasscode"
|
|
433
|
+
},
|
|
434
|
+
setWallet: (wallet) => set({ wallet })
|
|
435
|
+
}),
|
|
436
|
+
{ name: "match-local" }
|
|
437
|
+
);
|
|
438
|
+
var useLocalStore = create(devtools(persistedState));
|
|
439
|
+
var localStore = useLocalStore;
|
|
440
|
+
var useLocalStore_default = useLocalStore;
|
|
461
441
|
|
|
462
|
-
// src/
|
|
463
|
-
import {
|
|
464
|
-
function PasswordModal({
|
|
465
|
-
title,
|
|
466
|
-
isOpen,
|
|
467
|
-
onSuccess,
|
|
468
|
-
chainType = "ethereum" /* Ethereum */,
|
|
469
|
-
recoveryType = "user_passcode_recovery_key" /* UserPasscode */,
|
|
470
|
-
...props
|
|
471
|
-
}) {
|
|
472
|
-
const { refreshOverview, overview } = useUserInfo();
|
|
473
|
-
const { isLogin, did } = useUserInfo();
|
|
474
|
-
const [password, setPassword] = useState("");
|
|
475
|
-
const [rePassword, setRePassword] = useState("");
|
|
476
|
-
const [error, setError] = useState("");
|
|
477
|
-
const { generateEmbeddedWallets, initCore } = useWallet();
|
|
478
|
-
const { walletReady } = useStore_default();
|
|
479
|
-
const intl = useIntl();
|
|
480
|
-
const passwordError = useMemo(() => {
|
|
481
|
-
if (password.length < 6) return intl.formatMessage({
|
|
482
|
-
id: "passwordMinError"
|
|
483
|
-
}, {
|
|
484
|
-
length: 6
|
|
485
|
-
});
|
|
486
|
-
return "";
|
|
487
|
-
}, [password]);
|
|
488
|
-
const rePasswordError = useMemo(() => {
|
|
489
|
-
if (rePassword != password) {
|
|
490
|
-
return intl.formatMessage({
|
|
491
|
-
id: "passwordMatchError"
|
|
492
|
-
});
|
|
493
|
-
}
|
|
494
|
-
return "";
|
|
495
|
-
}, [rePassword, password]);
|
|
496
|
-
useEffect(() => {
|
|
497
|
-
if (isOpen) {
|
|
498
|
-
setPassword("");
|
|
499
|
-
setRePassword("");
|
|
500
|
-
}
|
|
501
|
-
}, [isOpen, overview]);
|
|
502
|
-
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
503
|
-
const onContinue = async () => {
|
|
504
|
-
if (isSubmitting) return;
|
|
505
|
-
try {
|
|
506
|
-
setIsSubmitting(true);
|
|
507
|
-
await initCore({
|
|
508
|
-
did: overview?.did || "",
|
|
509
|
-
address: ""
|
|
510
|
-
});
|
|
511
|
-
const address = await generateEmbeddedWallets({
|
|
512
|
-
userPasscode: password,
|
|
513
|
-
chainType,
|
|
514
|
-
recoveryType
|
|
515
|
-
});
|
|
516
|
-
await refreshOverview();
|
|
517
|
-
onSuccess && onSuccess();
|
|
518
|
-
} catch (error2) {
|
|
519
|
-
setError(error2.message);
|
|
520
|
-
} finally {
|
|
521
|
-
setIsSubmitting(false);
|
|
522
|
-
}
|
|
523
|
-
};
|
|
524
|
-
return /* @__PURE__ */ jsx(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
525
|
-
id: "passwordTitle"
|
|
526
|
-
}), children: /* @__PURE__ */ jsxs("div", { className: "matchid-password-box", children: [
|
|
527
|
-
/* @__PURE__ */ jsxs("div", { className: "matchid-password-header", children: [
|
|
528
|
-
/* @__PURE__ */ jsx("div", { className: "matchid-password-header-icon", children: /* @__PURE__ */ jsx(PasswordRoundIcon, {}) }),
|
|
529
|
-
/* @__PURE__ */ jsx("div", { className: "matchid-password-header-content", children: /* @__PURE__ */ jsx(FormattedMessage, { id: "passwordTips" }) })
|
|
530
|
-
] }),
|
|
531
|
-
/* @__PURE__ */ jsxs("div", { className: "matchid-password-content", children: [
|
|
532
|
-
/* @__PURE__ */ jsx(Field, { label: intl.formatMessage({ id: "password" }), error: password.length > 0 && passwordError, children: /* @__PURE__ */ jsx(
|
|
533
|
-
Input,
|
|
534
|
-
{
|
|
535
|
-
placeholder: intl.formatMessage({ id: "passwordPlaceholder" }),
|
|
536
|
-
maxLength: 32,
|
|
537
|
-
type: "password",
|
|
538
|
-
onChange: (e) => setPassword(e.target.value),
|
|
539
|
-
value: password
|
|
540
|
-
}
|
|
541
|
-
) }),
|
|
542
|
-
/* @__PURE__ */ jsx(Field, { label: intl.formatMessage({
|
|
543
|
-
id: "rePassword"
|
|
544
|
-
}), error: !walletReady ? intl.formatMessage({ id: "walletLoading" }) : rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ jsx(
|
|
545
|
-
Input,
|
|
546
|
-
{
|
|
547
|
-
placeholder: intl.formatMessage({
|
|
548
|
-
id: "rePasswordPlaceholder"
|
|
549
|
-
}),
|
|
550
|
-
maxLength: 32,
|
|
551
|
-
onChange: (e) => setRePassword(e.target.value),
|
|
552
|
-
value: rePassword,
|
|
553
|
-
type: "password"
|
|
554
|
-
}
|
|
555
|
-
) })
|
|
556
|
-
] }),
|
|
557
|
-
/* @__PURE__ */ jsx(
|
|
558
|
-
Button,
|
|
559
|
-
{
|
|
560
|
-
disabled: password.length == 0 || !!passwordError || !!rePasswordError || !walletReady,
|
|
561
|
-
highlight: true,
|
|
562
|
-
block: true,
|
|
563
|
-
size: "lg",
|
|
564
|
-
onClick: onContinue,
|
|
565
|
-
loading: isSubmitting,
|
|
566
|
-
children: /* @__PURE__ */ jsx(FormattedMessage, { id: "continue" })
|
|
567
|
-
}
|
|
568
|
-
)
|
|
569
|
-
] }) });
|
|
570
|
-
}
|
|
442
|
+
// src/hooks/useUserInfo.tsx
|
|
443
|
+
import { useMemo as useMemo10 } from "react";
|
|
571
444
|
|
|
572
|
-
// src/
|
|
573
|
-
import {
|
|
574
|
-
import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
|
|
575
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
576
|
-
function RecoveryModal({
|
|
577
|
-
title,
|
|
578
|
-
isOpen,
|
|
579
|
-
onSuccess,
|
|
580
|
-
chainType,
|
|
581
|
-
recoveryType,
|
|
582
|
-
...props
|
|
583
|
-
}) {
|
|
584
|
-
const { refreshOverview } = useUserInfo();
|
|
585
|
-
const { isLogin, overview } = useUserInfo();
|
|
586
|
-
const [password, setPassword] = useState2("");
|
|
587
|
-
const { recoveryEmbeddedWallets, initCore } = useWallet();
|
|
588
|
-
const [error, setError] = useState2("");
|
|
589
|
-
const { walletReady } = useStore_default();
|
|
590
|
-
const intl = useIntl2();
|
|
591
|
-
const passwordError = useMemo2(() => {
|
|
592
|
-
if (password.length < 6) return intl.formatMessage({
|
|
593
|
-
id: "passwordMinError"
|
|
594
|
-
}, {
|
|
595
|
-
length: 6
|
|
596
|
-
});
|
|
597
|
-
return "";
|
|
598
|
-
}, [password]);
|
|
599
|
-
useEffect2(() => {
|
|
600
|
-
if (isOpen && overview) {
|
|
601
|
-
setPassword("");
|
|
602
|
-
}
|
|
603
|
-
}, [isOpen, overview]);
|
|
604
|
-
const [isSubmitting, setIsSubmitting] = useState2(false);
|
|
605
|
-
const onContinue = async () => {
|
|
606
|
-
if (isSubmitting) return;
|
|
607
|
-
try {
|
|
608
|
-
setIsSubmitting(true);
|
|
609
|
-
await initCore({
|
|
610
|
-
did: overview?.did || "",
|
|
611
|
-
address: overview?.address || ""
|
|
612
|
-
});
|
|
613
|
-
await recoveryEmbeddedWallets({
|
|
614
|
-
userPasscode: password,
|
|
615
|
-
chainType,
|
|
616
|
-
recoveryType: "user_passcode_recovery_key" /* UserPasscode */
|
|
617
|
-
});
|
|
618
|
-
await refreshOverview();
|
|
619
|
-
onSuccess && onSuccess();
|
|
620
|
-
} catch (error2) {
|
|
621
|
-
console.error("qwe-recover-error", error2);
|
|
622
|
-
setError(error2.message);
|
|
623
|
-
} finally {
|
|
624
|
-
setIsSubmitting(false);
|
|
625
|
-
}
|
|
626
|
-
};
|
|
627
|
-
return /* @__PURE__ */ jsx2(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
628
|
-
id: "recoverTitle"
|
|
629
|
-
}), children: /* @__PURE__ */ jsxs2("div", { className: "matchid-password-box", children: [
|
|
630
|
-
/* @__PURE__ */ jsxs2("div", { className: "matchid-password-header", children: [
|
|
631
|
-
/* @__PURE__ */ jsx2("div", { className: "matchid-password-header-icon", children: /* @__PURE__ */ jsx2(PasswordRoundIcon, {}) }),
|
|
632
|
-
/* @__PURE__ */ jsx2("div", { className: "matchid-password-header-content", children: /* @__PURE__ */ jsx2(FormattedMessage2, { id: "recoverTips" }) })
|
|
633
|
-
] }),
|
|
634
|
-
/* @__PURE__ */ jsx2("div", { className: "matchid-password-content", children: /* @__PURE__ */ jsx2(
|
|
635
|
-
Field,
|
|
636
|
-
{
|
|
637
|
-
label: intl.formatMessage({ id: "password" }),
|
|
638
|
-
error: !walletReady ? intl.formatMessage({ id: "walletLoading" }) : password.length > 0 ? passwordError || error : error,
|
|
639
|
-
children: /* @__PURE__ */ jsx2(
|
|
640
|
-
Input,
|
|
641
|
-
{
|
|
642
|
-
placeholder: intl.formatMessage({ id: "passwordPlaceholder" }),
|
|
643
|
-
maxLength: 32,
|
|
644
|
-
type: "password",
|
|
645
|
-
onChange: (e) => setPassword(e.target.value),
|
|
646
|
-
value: password
|
|
647
|
-
}
|
|
648
|
-
)
|
|
649
|
-
}
|
|
650
|
-
) }),
|
|
651
|
-
/* @__PURE__ */ jsx2(
|
|
652
|
-
Button,
|
|
653
|
-
{
|
|
654
|
-
disabled: password.length == 0 || !!passwordError || !walletReady,
|
|
655
|
-
highlight: true,
|
|
656
|
-
block: true,
|
|
657
|
-
size: "lg",
|
|
658
|
-
onClick: onContinue,
|
|
659
|
-
loading: isSubmitting,
|
|
660
|
-
children: /* @__PURE__ */ jsx2(FormattedMessage2, { id: "continue" })
|
|
661
|
-
}
|
|
662
|
-
)
|
|
663
|
-
] }) });
|
|
664
|
-
}
|
|
445
|
+
// src/MatchContext.tsx
|
|
446
|
+
import { createContext, useContext } from "react";
|
|
665
447
|
|
|
666
448
|
// src/store/useModalStore.ts
|
|
667
|
-
import { create as
|
|
449
|
+
import { create as create2 } from "zustand";
|
|
668
450
|
|
|
669
451
|
// src/hooks/useConfig.tsx
|
|
670
|
-
import { jsx
|
|
452
|
+
import { jsx } from "react/jsx-runtime";
|
|
671
453
|
var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
672
454
|
var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
673
455
|
function useWalletConfig() {
|
|
674
456
|
const isDownMd = useDownMd();
|
|
675
457
|
const walletMap = {
|
|
676
458
|
evm: {
|
|
677
|
-
icon: /* @__PURE__ */
|
|
678
|
-
activeIcon: /* @__PURE__ */
|
|
459
|
+
icon: /* @__PURE__ */ jsx(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
460
|
+
activeIcon: /* @__PURE__ */ jsx(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
679
461
|
name: "EVM",
|
|
680
462
|
method: "evm"
|
|
681
463
|
},
|
|
682
464
|
sol: {
|
|
683
|
-
icon: /* @__PURE__ */
|
|
684
|
-
activeIcon: /* @__PURE__ */
|
|
465
|
+
icon: /* @__PURE__ */ jsx(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
466
|
+
activeIcon: /* @__PURE__ */ jsx(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
685
467
|
name: "SOL",
|
|
686
468
|
method: "sol"
|
|
687
469
|
},
|
|
688
470
|
btc: {
|
|
689
|
-
icon: /* @__PURE__ */
|
|
690
|
-
activeIcon: /* @__PURE__ */
|
|
471
|
+
icon: /* @__PURE__ */ jsx(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
472
|
+
activeIcon: /* @__PURE__ */ jsx(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
691
473
|
name: "BTC",
|
|
692
474
|
method: "btc"
|
|
693
475
|
},
|
|
694
476
|
tron: {
|
|
695
|
-
icon: /* @__PURE__ */
|
|
696
|
-
activeIcon: /* @__PURE__ */
|
|
477
|
+
icon: /* @__PURE__ */ jsx(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
478
|
+
activeIcon: /* @__PURE__ */ jsx(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
697
479
|
name: "TRON",
|
|
698
480
|
method: "tron"
|
|
699
481
|
},
|
|
700
482
|
ton: {
|
|
701
|
-
icon: /* @__PURE__ */
|
|
702
|
-
activeIcon: /* @__PURE__ */
|
|
483
|
+
icon: /* @__PURE__ */ jsx(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
484
|
+
activeIcon: /* @__PURE__ */ jsx(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
703
485
|
name: "TON",
|
|
704
486
|
method: "ton"
|
|
705
487
|
}
|
|
@@ -710,37 +492,37 @@ function useWalletConfig() {
|
|
|
710
492
|
}
|
|
711
493
|
|
|
712
494
|
// src/store/useModalStore.ts
|
|
713
|
-
var useSOLModalStore =
|
|
495
|
+
var useSOLModalStore = create2((set) => ({
|
|
714
496
|
isOpen: false,
|
|
715
497
|
type: "",
|
|
716
498
|
open: (type) => set({ isOpen: true, type }),
|
|
717
499
|
close: () => set({ isOpen: false })
|
|
718
500
|
}));
|
|
719
|
-
var useTRONModalStore =
|
|
501
|
+
var useTRONModalStore = create2((set) => ({
|
|
720
502
|
isOpen: false,
|
|
721
503
|
type: "",
|
|
722
504
|
open: (type) => set({ isOpen: true, type }),
|
|
723
505
|
close: () => set({ isOpen: false })
|
|
724
506
|
}));
|
|
725
|
-
var useTONModalStore =
|
|
507
|
+
var useTONModalStore = create2((set) => ({
|
|
726
508
|
isOpen: false,
|
|
727
509
|
type: "",
|
|
728
510
|
open: (type) => set({ isOpen: true, type }),
|
|
729
511
|
close: () => set({ isOpen: false })
|
|
730
512
|
}));
|
|
731
|
-
var useBTCModalStore =
|
|
513
|
+
var useBTCModalStore = create2((set) => ({
|
|
732
514
|
isOpen: false,
|
|
733
515
|
type: "",
|
|
734
516
|
open: (type) => set({ isOpen: true, type }),
|
|
735
517
|
close: () => set({ isOpen: false })
|
|
736
518
|
}));
|
|
737
|
-
var useCEXBindModalStore =
|
|
519
|
+
var useCEXBindModalStore = create2((set) => ({
|
|
738
520
|
type: "",
|
|
739
521
|
isOpen: false,
|
|
740
522
|
open: (type) => set({ isOpen: true, type }),
|
|
741
523
|
close: () => set({ isOpen: false })
|
|
742
524
|
}));
|
|
743
|
-
var useHashPanelStore =
|
|
525
|
+
var useHashPanelStore = create2((set) => ({
|
|
744
526
|
isOpen: false,
|
|
745
527
|
hash: null,
|
|
746
528
|
chain: null,
|
|
@@ -751,7 +533,7 @@ var useHashPanelStore = create3((set) => ({
|
|
|
751
533
|
}),
|
|
752
534
|
close: () => set({ isOpen: false })
|
|
753
535
|
}));
|
|
754
|
-
var useWalletModalStore =
|
|
536
|
+
var useWalletModalStore = create2((set) => ({
|
|
755
537
|
isOpen: false,
|
|
756
538
|
type: "",
|
|
757
539
|
methods: [],
|
|
@@ -774,7 +556,6 @@ __export(components_exports, {
|
|
|
774
556
|
Modal: () => Modal,
|
|
775
557
|
ModalWithHeader: () => ModalWithHeader,
|
|
776
558
|
Overlay: () => Overlay,
|
|
777
|
-
PasswordModal: () => PasswordModal,
|
|
778
559
|
Popover: () => Popover,
|
|
779
560
|
SOLModal: () => SOLModal,
|
|
780
561
|
TONModal: () => TONModal,
|
|
@@ -784,10 +565,10 @@ __export(components_exports, {
|
|
|
784
565
|
});
|
|
785
566
|
|
|
786
567
|
// src/components/EmailModal/index.tsx
|
|
787
|
-
import { useEffect as
|
|
568
|
+
import { useEffect as useEffect3, useState as useState3 } from "react";
|
|
788
569
|
|
|
789
570
|
// src/components/EmailModal/StepEmail.tsx
|
|
790
|
-
import { useEffect
|
|
571
|
+
import { useEffect, useMemo, useState } from "react";
|
|
791
572
|
|
|
792
573
|
// src/utils/index.ts
|
|
793
574
|
var getVersion = () => {
|
|
@@ -815,26 +596,26 @@ function getAppClientId() {
|
|
|
815
596
|
}
|
|
816
597
|
|
|
817
598
|
// src/components/EmailModal/StepEmail.tsx
|
|
818
|
-
import { FormattedMessage
|
|
819
|
-
import { jsx as
|
|
599
|
+
import { FormattedMessage, useIntl } from "react-intl";
|
|
600
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
820
601
|
function StepEmail(props) {
|
|
821
|
-
const intl =
|
|
822
|
-
const [emailVal, setEmailVal] =
|
|
823
|
-
|
|
602
|
+
const intl = useIntl();
|
|
603
|
+
const [emailVal, setEmailVal] = useState("");
|
|
604
|
+
useEffect(() => {
|
|
824
605
|
if (props.email) {
|
|
825
606
|
setEmailVal(props.email);
|
|
826
607
|
}
|
|
827
608
|
}, []);
|
|
828
|
-
const canContinue =
|
|
609
|
+
const canContinue = useMemo(() => {
|
|
829
610
|
return isValidEmail(emailVal);
|
|
830
611
|
}, [emailVal]);
|
|
831
612
|
const onContinue = async () => {
|
|
832
613
|
props.onContinue(emailVal);
|
|
833
614
|
};
|
|
834
|
-
return /* @__PURE__ */
|
|
835
|
-
/* @__PURE__ */
|
|
615
|
+
return /* @__PURE__ */ jsxs("div", { className: "matchid-email-email-box", children: [
|
|
616
|
+
/* @__PURE__ */ jsx2(Field, { label: intl.formatMessage({
|
|
836
617
|
id: "emailAddress"
|
|
837
|
-
}), children: /* @__PURE__ */
|
|
618
|
+
}), children: /* @__PURE__ */ jsx2(
|
|
838
619
|
Input,
|
|
839
620
|
{
|
|
840
621
|
placeholder: intl.formatMessage({
|
|
@@ -844,31 +625,31 @@ function StepEmail(props) {
|
|
|
844
625
|
value: emailVal
|
|
845
626
|
}
|
|
846
627
|
) }),
|
|
847
|
-
/* @__PURE__ */
|
|
628
|
+
/* @__PURE__ */ jsx2(Button, { disabled: !canContinue, style: {
|
|
848
629
|
marginTop: "64px"
|
|
849
|
-
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */
|
|
630
|
+
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ jsx2(FormattedMessage, { id: "continue" }) })
|
|
850
631
|
] });
|
|
851
632
|
}
|
|
852
633
|
|
|
853
634
|
// src/components/EmailModal/StepVerify.tsx
|
|
854
|
-
import { useEffect as
|
|
635
|
+
import { useEffect as useEffect2, useMemo as useMemo2, useRef, useState as useState2 } from "react";
|
|
855
636
|
|
|
856
637
|
// src/config/index.tsx
|
|
857
638
|
var EMAIL_INTERVAL = 60;
|
|
858
639
|
var EMAIL_CODE_LENGTH = 6;
|
|
859
640
|
|
|
860
641
|
// src/components/EmailModal/StepVerify.tsx
|
|
861
|
-
import { FormattedMessage as
|
|
862
|
-
import { jsx as
|
|
642
|
+
import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
|
|
643
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
863
644
|
function StepVerify(props) {
|
|
864
|
-
const intl =
|
|
645
|
+
const intl = useIntl2();
|
|
865
646
|
const { getLoginEmailCode, loginByEmail } = useUserInfo();
|
|
866
|
-
const [error, setError] =
|
|
867
|
-
const [code, setCode] =
|
|
868
|
-
const [sending, setSending] =
|
|
869
|
-
const [submitting, setSubmitting] =
|
|
647
|
+
const [error, setError] = useState2("");
|
|
648
|
+
const [code, setCode] = useState2("");
|
|
649
|
+
const [sending, setSending] = useState2(false);
|
|
650
|
+
const [submitting, setSubmitting] = useState2(false);
|
|
870
651
|
const sendTimeRef = useRef(0);
|
|
871
|
-
const [sendBtnText, setSendBtnText] =
|
|
652
|
+
const [sendBtnText, setSendBtnText] = useState2(intl.formatMessage({
|
|
872
653
|
id: "send"
|
|
873
654
|
}));
|
|
874
655
|
const intervalTime = EMAIL_INTERVAL;
|
|
@@ -904,7 +685,7 @@ function StepVerify(props) {
|
|
|
904
685
|
setSending(false);
|
|
905
686
|
}
|
|
906
687
|
};
|
|
907
|
-
|
|
688
|
+
useEffect2(() => {
|
|
908
689
|
onSend();
|
|
909
690
|
return () => {
|
|
910
691
|
if (intervalRef.current) {
|
|
@@ -912,7 +693,7 @@ function StepVerify(props) {
|
|
|
912
693
|
}
|
|
913
694
|
};
|
|
914
695
|
}, []);
|
|
915
|
-
const canContinue =
|
|
696
|
+
const canContinue = useMemo2(() => {
|
|
916
697
|
return code.length === codeLength;
|
|
917
698
|
}, [code]);
|
|
918
699
|
const onContinue = async () => {
|
|
@@ -936,17 +717,17 @@ function StepVerify(props) {
|
|
|
936
717
|
setSubmitting(false);
|
|
937
718
|
}
|
|
938
719
|
};
|
|
939
|
-
return /* @__PURE__ */
|
|
940
|
-
/* @__PURE__ */
|
|
941
|
-
/* @__PURE__ */
|
|
942
|
-
/* @__PURE__ */
|
|
943
|
-
/* @__PURE__ */
|
|
944
|
-
/* @__PURE__ */
|
|
720
|
+
return /* @__PURE__ */ jsxs2("div", { className: "matchid-email-verify-box", children: [
|
|
721
|
+
/* @__PURE__ */ jsxs2("div", { className: "matchid-email-verify-header", children: [
|
|
722
|
+
/* @__PURE__ */ jsx3("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx3(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
|
|
723
|
+
/* @__PURE__ */ jsxs2("div", { className: "matchid-email-verify-header-content", children: [
|
|
724
|
+
/* @__PURE__ */ jsx3("div", { className: "matchid-email-verify-header-value", children: props.email }),
|
|
725
|
+
/* @__PURE__ */ jsx3("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx3(FormattedMessage2, { id: "sendEmailTips" }) })
|
|
945
726
|
] })
|
|
946
727
|
] }),
|
|
947
|
-
/* @__PURE__ */
|
|
728
|
+
/* @__PURE__ */ jsx3(Field, { label: intl.formatMessage({
|
|
948
729
|
id: "verificationCode"
|
|
949
|
-
}), error, children: /* @__PURE__ */
|
|
730
|
+
}), error, children: /* @__PURE__ */ jsx3(
|
|
950
731
|
Input,
|
|
951
732
|
{
|
|
952
733
|
placeholder: intl.formatMessage({
|
|
@@ -956,7 +737,7 @@ function StepVerify(props) {
|
|
|
956
737
|
maxLength: codeLength,
|
|
957
738
|
onChange: (e) => setCode(e.target.value),
|
|
958
739
|
value: code,
|
|
959
|
-
after: /* @__PURE__ */
|
|
740
|
+
after: /* @__PURE__ */ jsx3(
|
|
960
741
|
Button,
|
|
961
742
|
{
|
|
962
743
|
highlight: true,
|
|
@@ -975,13 +756,13 @@ function StepVerify(props) {
|
|
|
975
756
|
)
|
|
976
757
|
}
|
|
977
758
|
) }),
|
|
978
|
-
/* @__PURE__ */
|
|
759
|
+
/* @__PURE__ */ jsx3(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx3(FormattedMessage2, { id: "continue" }) })
|
|
979
760
|
] });
|
|
980
761
|
}
|
|
981
762
|
|
|
982
763
|
// src/components/EmailModal/index.tsx
|
|
983
|
-
import { useIntl as
|
|
984
|
-
import { jsx as
|
|
764
|
+
import { useIntl as useIntl3 } from "react-intl";
|
|
765
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
985
766
|
function EmailModal({
|
|
986
767
|
isOpen = false,
|
|
987
768
|
width = 480,
|
|
@@ -989,16 +770,16 @@ function EmailModal({
|
|
|
989
770
|
onBack,
|
|
990
771
|
onLogin
|
|
991
772
|
}) {
|
|
992
|
-
const [step, setStep] =
|
|
993
|
-
const [emailVal, setEmailVal] =
|
|
994
|
-
const intl =
|
|
995
|
-
|
|
773
|
+
const [step, setStep] = useState3("input");
|
|
774
|
+
const [emailVal, setEmailVal] = useState3("");
|
|
775
|
+
const intl = useIntl3();
|
|
776
|
+
useEffect3(() => {
|
|
996
777
|
if (!isOpen) {
|
|
997
778
|
setStep("input");
|
|
998
779
|
setEmailVal("");
|
|
999
780
|
}
|
|
1000
781
|
}, [isOpen]);
|
|
1001
|
-
return /* @__PURE__ */
|
|
782
|
+
return /* @__PURE__ */ jsx4(
|
|
1002
783
|
ModalWithHeader,
|
|
1003
784
|
{
|
|
1004
785
|
isOpen,
|
|
@@ -1008,17 +789,17 @@ function EmailModal({
|
|
|
1008
789
|
id: "email"
|
|
1009
790
|
}),
|
|
1010
791
|
onBack: step == "verify" ? () => setStep("input") : onBack,
|
|
1011
|
-
children: step === "input" ? /* @__PURE__ */
|
|
792
|
+
children: step === "input" ? /* @__PURE__ */ jsx4(StepEmail, { email: emailVal, onContinue: (email) => {
|
|
1012
793
|
setEmailVal(email);
|
|
1013
794
|
setStep("verify");
|
|
1014
|
-
} }) : /* @__PURE__ */
|
|
795
|
+
} }) : /* @__PURE__ */ jsx4(StepVerify, { email: emailVal, onSuccess: onLogin })
|
|
1015
796
|
}
|
|
1016
797
|
);
|
|
1017
798
|
}
|
|
1018
799
|
|
|
1019
800
|
// src/components/LoginBox/index.tsx
|
|
1020
|
-
import { useMemo as
|
|
1021
|
-
import { FormattedMessage as
|
|
801
|
+
import { useMemo as useMemo3, useState as useState4 } from "react";
|
|
802
|
+
import { FormattedMessage as FormattedMessage3, useIntl as useIntl4 } from "react-intl";
|
|
1022
803
|
|
|
1023
804
|
// src/hooks/useAppConfig.ts
|
|
1024
805
|
import { useQuery } from "@tanstack/react-query";
|
|
@@ -1041,7 +822,7 @@ function useAppConfig() {
|
|
|
1041
822
|
}
|
|
1042
823
|
|
|
1043
824
|
// src/components/LoginBox/index.tsx
|
|
1044
|
-
import { Fragment, jsx as
|
|
825
|
+
import { Fragment, jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1045
826
|
var RecommendItem = ({
|
|
1046
827
|
icon,
|
|
1047
828
|
name,
|
|
@@ -1050,20 +831,20 @@ var RecommendItem = ({
|
|
|
1050
831
|
children,
|
|
1051
832
|
footer
|
|
1052
833
|
}) => {
|
|
1053
|
-
return /* @__PURE__ */
|
|
1054
|
-
/* @__PURE__ */
|
|
1055
|
-
/* @__PURE__ */
|
|
1056
|
-
/* @__PURE__ */
|
|
1057
|
-
/* @__PURE__ */
|
|
834
|
+
return /* @__PURE__ */ jsxs3("div", { className: "matchid-login-recommend-method", children: [
|
|
835
|
+
/* @__PURE__ */ jsxs3("div", { className: "matchid-login-recommend-method-item", onClick, children: [
|
|
836
|
+
/* @__PURE__ */ jsxs3("div", { className: "matchid-login-recommend-method-content", children: [
|
|
837
|
+
/* @__PURE__ */ jsx5("div", { className: "matchid-login-recommend-method-icon", children: icon }),
|
|
838
|
+
/* @__PURE__ */ jsx5("span", { className: "matchid-login-recommend-method-name", children: name })
|
|
1058
839
|
] }),
|
|
1059
|
-
footer ? footer : children ? /* @__PURE__ */
|
|
840
|
+
footer ? footer : children ? /* @__PURE__ */ jsx5(
|
|
1060
841
|
ArrowDownIcon,
|
|
1061
842
|
{
|
|
1062
843
|
className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
|
|
1063
844
|
size: 20,
|
|
1064
845
|
color: "var(--matchid-arrow-color)"
|
|
1065
846
|
}
|
|
1066
|
-
) : /* @__PURE__ */
|
|
847
|
+
) : /* @__PURE__ */ jsx5(
|
|
1067
848
|
ArrowRightIcon,
|
|
1068
849
|
{
|
|
1069
850
|
className: "matchid-login-recommend-method-arrow",
|
|
@@ -1072,7 +853,7 @@ var RecommendItem = ({
|
|
|
1072
853
|
}
|
|
1073
854
|
)
|
|
1074
855
|
] }),
|
|
1075
|
-
children && /* @__PURE__ */
|
|
856
|
+
children && /* @__PURE__ */ jsx5(
|
|
1076
857
|
"div",
|
|
1077
858
|
{
|
|
1078
859
|
className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
|
|
@@ -1088,7 +869,7 @@ function LoginBox({
|
|
|
1088
869
|
inModal = false
|
|
1089
870
|
}) {
|
|
1090
871
|
const config = useAppConfig();
|
|
1091
|
-
const methodConfig =
|
|
872
|
+
const methodConfig = useMemo3(() => {
|
|
1092
873
|
if (recommendMethods || methods || walletMethods) {
|
|
1093
874
|
return {
|
|
1094
875
|
recommendMethods: recommendMethods ? recommendMethods : walletMethods ? ["wallet"] : [],
|
|
@@ -1130,82 +911,82 @@ function LoginBox({
|
|
|
1130
911
|
walletMethods: walletMethodList
|
|
1131
912
|
};
|
|
1132
913
|
}, [config.platform, recommendMethods, methods, walletMethods]);
|
|
1133
|
-
const [emailOpen, setEmailOpen] =
|
|
914
|
+
const [emailOpen, setEmailOpen] = useState4(false);
|
|
1134
915
|
const { login } = useUserInfo();
|
|
1135
|
-
const [showWallet, setShowWallet] =
|
|
1136
|
-
const intl =
|
|
916
|
+
const [showWallet, setShowWallet] = useState4(false);
|
|
917
|
+
const intl = useIntl4();
|
|
1137
918
|
const isDownMd = useDownMd();
|
|
1138
919
|
const methodMap = {
|
|
1139
920
|
wallet: {
|
|
1140
|
-
icon: /* @__PURE__ */
|
|
921
|
+
icon: /* @__PURE__ */ jsx5(WalletIcon, { size: isDownMd ? 36 : 40 }),
|
|
1141
922
|
name: intl.formatMessage({ id: "wallet" }),
|
|
1142
923
|
onClick: () => setShowWallet(!showWallet),
|
|
1143
924
|
type: "wallet"
|
|
1144
925
|
},
|
|
1145
926
|
email: {
|
|
1146
|
-
icon: /* @__PURE__ */
|
|
927
|
+
icon: /* @__PURE__ */ jsx5(EmailIcon, { size: isDownMd ? 36 : 40 }),
|
|
1147
928
|
name: intl.formatMessage({ id: "email" }),
|
|
1148
929
|
onClick: () => {
|
|
1149
930
|
setEmailOpen(true);
|
|
1150
931
|
}
|
|
1151
932
|
},
|
|
1152
933
|
google: {
|
|
1153
|
-
icon: /* @__PURE__ */
|
|
934
|
+
icon: /* @__PURE__ */ jsx5(GoogleIcon, { size: isDownMd ? 36 : 40 }),
|
|
1154
935
|
name: "Google",
|
|
1155
936
|
onClick: () => login("google")
|
|
1156
937
|
},
|
|
1157
938
|
twitter: {
|
|
1158
|
-
icon: /* @__PURE__ */
|
|
939
|
+
icon: /* @__PURE__ */ jsx5(XIcon, { size: isDownMd ? 36 : 40 }),
|
|
1159
940
|
name: "X",
|
|
1160
941
|
onClick: () => login("twitter")
|
|
1161
942
|
},
|
|
1162
943
|
telegram: {
|
|
1163
|
-
icon: /* @__PURE__ */
|
|
944
|
+
icon: /* @__PURE__ */ jsx5(TelegramIcon, { size: isDownMd ? 36 : 40 }),
|
|
1164
945
|
name: "Telegram",
|
|
1165
946
|
onClick: () => login("telegram")
|
|
1166
947
|
},
|
|
1167
948
|
github: {
|
|
1168
|
-
icon: /* @__PURE__ */
|
|
949
|
+
icon: /* @__PURE__ */ jsx5(GithubIcon, { size: isDownMd ? 36 : 40 }),
|
|
1169
950
|
name: "Github",
|
|
1170
951
|
onClick: () => login("github")
|
|
1171
952
|
},
|
|
1172
953
|
discord: {
|
|
1173
|
-
icon: /* @__PURE__ */
|
|
954
|
+
icon: /* @__PURE__ */ jsx5(DiscordIcon, { size: isDownMd ? 36 : 40 }),
|
|
1174
955
|
name: "Discord",
|
|
1175
956
|
onClick: () => login("discord")
|
|
1176
957
|
},
|
|
1177
958
|
linkedin: {
|
|
1178
|
-
icon: /* @__PURE__ */
|
|
959
|
+
icon: /* @__PURE__ */ jsx5(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
|
|
1179
960
|
name: "LinkedIn",
|
|
1180
961
|
onClick: () => login("linkedin")
|
|
1181
962
|
},
|
|
1182
963
|
facebook: {
|
|
1183
|
-
icon: /* @__PURE__ */
|
|
964
|
+
icon: /* @__PURE__ */ jsx5(FacebookIcon, { size: isDownMd ? 36 : 40 }),
|
|
1184
965
|
name: "Facebook",
|
|
1185
966
|
onClick: () => login("facebook")
|
|
1186
967
|
},
|
|
1187
968
|
youtube: {
|
|
1188
|
-
icon: /* @__PURE__ */
|
|
969
|
+
icon: /* @__PURE__ */ jsx5(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
|
|
1189
970
|
name: "Youtube",
|
|
1190
971
|
onClick: () => login("youtube")
|
|
1191
972
|
}
|
|
1192
973
|
};
|
|
1193
974
|
const { walletMap } = useWalletConfig();
|
|
1194
|
-
return /* @__PURE__ */
|
|
1195
|
-
(!inModal || !emailOpen) && /* @__PURE__ */
|
|
1196
|
-
/* @__PURE__ */
|
|
1197
|
-
return /* @__PURE__ */
|
|
975
|
+
return /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
976
|
+
(!inModal || !emailOpen) && /* @__PURE__ */ jsxs3("div", { className: "matchid-login-box", children: [
|
|
977
|
+
/* @__PURE__ */ jsx5("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
|
|
978
|
+
return /* @__PURE__ */ jsx5(
|
|
1198
979
|
RecommendItem,
|
|
1199
980
|
{
|
|
1200
981
|
icon: methodMap[m]?.icon,
|
|
1201
982
|
name: methodMap[m]?.name,
|
|
1202
983
|
onClick: methodMap[m]?.onClick,
|
|
1203
984
|
showChildren: m == "wallet" && showWallet,
|
|
1204
|
-
children: m == "wallet" && /* @__PURE__ */
|
|
1205
|
-
/* @__PURE__ */
|
|
1206
|
-
/* @__PURE__ */
|
|
985
|
+
children: m == "wallet" && /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
986
|
+
/* @__PURE__ */ jsx5("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
987
|
+
/* @__PURE__ */ jsx5("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
|
|
1207
988
|
const m2 = walletMap[n];
|
|
1208
|
-
return /* @__PURE__ */
|
|
989
|
+
return /* @__PURE__ */ jsxs3(
|
|
1209
990
|
"div",
|
|
1210
991
|
{
|
|
1211
992
|
className: "matchid-login-recommend-wallet-item",
|
|
@@ -1213,16 +994,16 @@ function LoginBox({
|
|
|
1213
994
|
login(m2.method);
|
|
1214
995
|
},
|
|
1215
996
|
children: [
|
|
1216
|
-
/* @__PURE__ */
|
|
1217
|
-
/* @__PURE__ */
|
|
1218
|
-
/* @__PURE__ */
|
|
997
|
+
/* @__PURE__ */ jsxs3("div", { className: "matchid-login-recommend-wallet-item-content", children: [
|
|
998
|
+
/* @__PURE__ */ jsx5("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
|
|
999
|
+
/* @__PURE__ */ jsx5(
|
|
1219
1000
|
"div",
|
|
1220
1001
|
{
|
|
1221
1002
|
className: "matchid-login-recommend-wallet-item-hover-icon",
|
|
1222
1003
|
children: m2.activeIcon
|
|
1223
1004
|
}
|
|
1224
1005
|
),
|
|
1225
|
-
/* @__PURE__ */
|
|
1006
|
+
/* @__PURE__ */ jsx5(
|
|
1226
1007
|
"span",
|
|
1227
1008
|
{
|
|
1228
1009
|
className: "matchid-login-recommend-wallet-item-name",
|
|
@@ -1230,7 +1011,7 @@ function LoginBox({
|
|
|
1230
1011
|
}
|
|
1231
1012
|
)
|
|
1232
1013
|
] }),
|
|
1233
|
-
/* @__PURE__ */
|
|
1014
|
+
/* @__PURE__ */ jsx5(
|
|
1234
1015
|
ArrowRightIcon,
|
|
1235
1016
|
{
|
|
1236
1017
|
className: "matchid-login-recommend-wallet-item-arrow",
|
|
@@ -1248,10 +1029,10 @@ function LoginBox({
|
|
|
1248
1029
|
m
|
|
1249
1030
|
);
|
|
1250
1031
|
}) }),
|
|
1251
|
-
methodConfig.methods.length > 0 && /* @__PURE__ */
|
|
1252
|
-
/* @__PURE__ */
|
|
1253
|
-
/* @__PURE__ */
|
|
1254
|
-
return /* @__PURE__ */
|
|
1032
|
+
methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs3("div", { className: "matchid-login-other", children: [
|
|
1033
|
+
/* @__PURE__ */ jsx5("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx5(FormattedMessage3, { id: "otherLoginMethods" }) }),
|
|
1034
|
+
/* @__PURE__ */ jsx5("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
|
|
1035
|
+
return /* @__PURE__ */ jsx5(
|
|
1255
1036
|
"div",
|
|
1256
1037
|
{
|
|
1257
1038
|
className: "matchid-login-method-item",
|
|
@@ -1264,7 +1045,7 @@ function LoginBox({
|
|
|
1264
1045
|
}) })
|
|
1265
1046
|
] })
|
|
1266
1047
|
] }),
|
|
1267
|
-
/* @__PURE__ */
|
|
1048
|
+
/* @__PURE__ */ jsx5(
|
|
1268
1049
|
EmailModal,
|
|
1269
1050
|
{
|
|
1270
1051
|
isOpen: emailOpen,
|
|
@@ -1280,56 +1061,56 @@ function LoginBox({
|
|
|
1280
1061
|
}
|
|
1281
1062
|
|
|
1282
1063
|
// src/components/LoginButton/index.tsx
|
|
1283
|
-
import { useState as
|
|
1064
|
+
import { useState as useState6 } from "react";
|
|
1284
1065
|
|
|
1285
1066
|
// src/components/LoginPanel/index.tsx
|
|
1286
|
-
import { FormattedMessage as
|
|
1287
|
-
import { jsx as
|
|
1067
|
+
import { FormattedMessage as FormattedMessage4 } from "react-intl";
|
|
1068
|
+
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1288
1069
|
function LoginPanel({
|
|
1289
1070
|
header,
|
|
1290
1071
|
onClose,
|
|
1291
1072
|
...props
|
|
1292
1073
|
}) {
|
|
1293
1074
|
const isDownMd = useDownMd();
|
|
1294
|
-
return /* @__PURE__ */
|
|
1295
|
-
header ? header : /* @__PURE__ */
|
|
1296
|
-
/* @__PURE__ */
|
|
1297
|
-
/* @__PURE__ */
|
|
1298
|
-
/* @__PURE__ */
|
|
1075
|
+
return /* @__PURE__ */ jsxs4("div", { className: "matchid-login-panel", children: [
|
|
1076
|
+
header ? header : /* @__PURE__ */ jsxs4("div", { className: "matchid-login-panel-header", children: [
|
|
1077
|
+
/* @__PURE__ */ jsxs4("div", { className: "matchid-login-panel-header-content", children: [
|
|
1078
|
+
/* @__PURE__ */ jsx6("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx6(FormattedMessage4, { id: "loginTitle" }) }),
|
|
1079
|
+
/* @__PURE__ */ jsx6("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx6(FormattedMessage4, { id: "loginTips" }) })
|
|
1299
1080
|
] }),
|
|
1300
|
-
onClose && /* @__PURE__ */
|
|
1081
|
+
onClose && /* @__PURE__ */ jsx6("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx6(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
|
|
1301
1082
|
] }),
|
|
1302
|
-
/* @__PURE__ */
|
|
1303
|
-
/* @__PURE__ */
|
|
1083
|
+
/* @__PURE__ */ jsx6("div", { className: "matchid-login-panel-divide" }),
|
|
1084
|
+
/* @__PURE__ */ jsx6("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx6(LoginBox, { ...props }) })
|
|
1304
1085
|
] });
|
|
1305
1086
|
}
|
|
1306
1087
|
|
|
1307
1088
|
// src/components/LoginModal/index.tsx
|
|
1308
|
-
import { jsx as
|
|
1089
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
1309
1090
|
function LoginModal({
|
|
1310
1091
|
isOpen = false,
|
|
1311
1092
|
width = 480,
|
|
1312
1093
|
...props
|
|
1313
1094
|
}) {
|
|
1314
1095
|
const { isLogin } = useUserInfo();
|
|
1315
|
-
return /* @__PURE__ */
|
|
1096
|
+
return /* @__PURE__ */ jsx7(
|
|
1316
1097
|
Modal,
|
|
1317
1098
|
{
|
|
1318
1099
|
isOpen: isOpen && !isLogin,
|
|
1319
1100
|
width,
|
|
1320
|
-
children: /* @__PURE__ */
|
|
1101
|
+
children: /* @__PURE__ */ jsx7(LoginPanel, { ...props, inModal: true })
|
|
1321
1102
|
}
|
|
1322
1103
|
);
|
|
1323
1104
|
}
|
|
1324
1105
|
|
|
1325
1106
|
// src/components/UserPopover/index.tsx
|
|
1326
|
-
import { useState as
|
|
1107
|
+
import { useState as useState5 } from "react";
|
|
1327
1108
|
|
|
1328
1109
|
// src/assets/icon/ProfileIcon.tsx
|
|
1329
|
-
import { jsx as
|
|
1110
|
+
import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1330
1111
|
function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
1331
|
-
return /* @__PURE__ */
|
|
1332
|
-
/* @__PURE__ */
|
|
1112
|
+
return /* @__PURE__ */ jsxs5("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
1113
|
+
/* @__PURE__ */ jsx8(
|
|
1333
1114
|
"path",
|
|
1334
1115
|
{
|
|
1335
1116
|
fillRule: "evenodd",
|
|
@@ -1338,7 +1119,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
1338
1119
|
fill: color
|
|
1339
1120
|
}
|
|
1340
1121
|
),
|
|
1341
|
-
/* @__PURE__ */
|
|
1122
|
+
/* @__PURE__ */ jsx8(
|
|
1342
1123
|
"path",
|
|
1343
1124
|
{
|
|
1344
1125
|
fillRule: "evenodd",
|
|
@@ -1351,11 +1132,11 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
1351
1132
|
}
|
|
1352
1133
|
|
|
1353
1134
|
// src/components/UserPopover/index.tsx
|
|
1354
|
-
import { FormattedMessage as
|
|
1355
|
-
import { jsx as
|
|
1135
|
+
import { FormattedMessage as FormattedMessage5, useIntl as useIntl5 } from "react-intl";
|
|
1136
|
+
import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1356
1137
|
function UserContent() {
|
|
1357
1138
|
const { logout, address, username } = useUserInfo();
|
|
1358
|
-
const [logouting, setLogouting] =
|
|
1139
|
+
const [logouting, setLogouting] = useState5(false);
|
|
1359
1140
|
const onLogout = async () => {
|
|
1360
1141
|
if (logouting) return;
|
|
1361
1142
|
try {
|
|
@@ -1373,34 +1154,34 @@ function UserContent() {
|
|
|
1373
1154
|
rightIcon,
|
|
1374
1155
|
onClick
|
|
1375
1156
|
}) => {
|
|
1376
|
-
return /* @__PURE__ */
|
|
1377
|
-
/* @__PURE__ */
|
|
1157
|
+
return /* @__PURE__ */ jsxs6("div", { className: "matchid-user-popover-item", onClick, children: [
|
|
1158
|
+
/* @__PURE__ */ jsxs6("div", { className: `matchid-user-popover-item-content`, children: [
|
|
1378
1159
|
icon,
|
|
1379
|
-
/* @__PURE__ */
|
|
1160
|
+
/* @__PURE__ */ jsx9("div", { className: "matchid-user-popover-item-text", children })
|
|
1380
1161
|
] }),
|
|
1381
1162
|
rightIcon
|
|
1382
1163
|
] });
|
|
1383
1164
|
};
|
|
1384
1165
|
const UserDivider = () => {
|
|
1385
|
-
return /* @__PURE__ */
|
|
1166
|
+
return /* @__PURE__ */ jsx9("div", { className: `matchid-user-popover-divider` });
|
|
1386
1167
|
};
|
|
1387
|
-
const [usernameOpen, setUsernameOpen] =
|
|
1168
|
+
const [usernameOpen, setUsernameOpen] = useState5(false);
|
|
1388
1169
|
const [copied, setCopied] = useCopyClipboard();
|
|
1389
|
-
const intl =
|
|
1390
|
-
return /* @__PURE__ */
|
|
1391
|
-
/* @__PURE__ */
|
|
1392
|
-
/* @__PURE__ */
|
|
1170
|
+
const intl = useIntl5();
|
|
1171
|
+
return /* @__PURE__ */ jsxs6("div", { className: "matchid-user-popover-content", children: [
|
|
1172
|
+
/* @__PURE__ */ jsxs6("div", { className: "matchid-user-popover-list", children: [
|
|
1173
|
+
/* @__PURE__ */ jsx9(UserItem, { onClick: () => {
|
|
1393
1174
|
setCopied(address);
|
|
1394
|
-
}, icon: copied ? /* @__PURE__ */
|
|
1395
|
-
/* @__PURE__ */
|
|
1396
|
-
/* @__PURE__ */
|
|
1175
|
+
}, icon: copied ? /* @__PURE__ */ jsx9(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx9(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx9(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
|
|
1176
|
+
/* @__PURE__ */ jsx9(UserDivider, {}),
|
|
1177
|
+
/* @__PURE__ */ jsx9(UserItem, { onClick: () => {
|
|
1397
1178
|
setUsernameOpen(true);
|
|
1398
|
-
}, icon: /* @__PURE__ */
|
|
1179
|
+
}, icon: /* @__PURE__ */ jsx9(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx9(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
|
|
1399
1180
|
id: "setUsername"
|
|
1400
1181
|
}) })
|
|
1401
1182
|
] }),
|
|
1402
|
-
/* @__PURE__ */
|
|
1403
|
-
/* @__PURE__ */
|
|
1183
|
+
/* @__PURE__ */ jsx9(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx9(FormattedMessage5, { id: "disconnect" }) }),
|
|
1184
|
+
/* @__PURE__ */ jsx9(UsernameModal, { isOpen: usernameOpen, onClose: () => {
|
|
1404
1185
|
setUsernameOpen(false);
|
|
1405
1186
|
}, onSuccess: () => {
|
|
1406
1187
|
setUsernameOpen(false);
|
|
@@ -1411,12 +1192,12 @@ function UserPopover({
|
|
|
1411
1192
|
children,
|
|
1412
1193
|
...props
|
|
1413
1194
|
}) {
|
|
1414
|
-
return /* @__PURE__ */
|
|
1195
|
+
return /* @__PURE__ */ jsx9(Popover, { ...props, content: /* @__PURE__ */ jsx9(UserContent, {}), children });
|
|
1415
1196
|
}
|
|
1416
1197
|
|
|
1417
1198
|
// src/components/LoginButton/index.tsx
|
|
1418
|
-
import { FormattedMessage as
|
|
1419
|
-
import { Fragment as Fragment2, jsx as
|
|
1199
|
+
import { FormattedMessage as FormattedMessage6, useIntl as useIntl6 } from "react-intl";
|
|
1200
|
+
import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1420
1201
|
function LoginButton({
|
|
1421
1202
|
loginRender,
|
|
1422
1203
|
methods,
|
|
@@ -1428,12 +1209,12 @@ function LoginButton({
|
|
|
1428
1209
|
walletMethods,
|
|
1429
1210
|
...props
|
|
1430
1211
|
}) {
|
|
1431
|
-
const intl =
|
|
1212
|
+
const intl = useIntl6();
|
|
1432
1213
|
const { isLogin, username } = useUserInfo();
|
|
1433
|
-
const [loginOpen, setLoginOpen] =
|
|
1214
|
+
const [loginOpen, setLoginOpen] = useState6(false);
|
|
1434
1215
|
if (!isLogin) {
|
|
1435
|
-
return /* @__PURE__ */
|
|
1436
|
-
/* @__PURE__ */
|
|
1216
|
+
return /* @__PURE__ */ jsxs7(Fragment2, { children: [
|
|
1217
|
+
/* @__PURE__ */ jsx10(
|
|
1437
1218
|
LoginModal,
|
|
1438
1219
|
{
|
|
1439
1220
|
methods,
|
|
@@ -1443,32 +1224,32 @@ function LoginButton({
|
|
|
1443
1224
|
onClose: () => setLoginOpen(false)
|
|
1444
1225
|
}
|
|
1445
1226
|
),
|
|
1446
|
-
/* @__PURE__ */
|
|
1447
|
-
/* @__PURE__ */
|
|
1448
|
-
/* @__PURE__ */
|
|
1227
|
+
/* @__PURE__ */ jsxs7(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
|
|
1228
|
+
/* @__PURE__ */ jsx10(UnLoginIcon_default, {}),
|
|
1229
|
+
/* @__PURE__ */ jsx10("span", { children: /* @__PURE__ */ jsx10(FormattedMessage6, { id: "login" }) })
|
|
1449
1230
|
] })
|
|
1450
1231
|
] });
|
|
1451
1232
|
}
|
|
1452
|
-
return loginRender ? /* @__PURE__ */
|
|
1453
|
-
/* @__PURE__ */
|
|
1454
|
-
/* @__PURE__ */
|
|
1233
|
+
return loginRender ? /* @__PURE__ */ jsx10(Fragment2, { children: loginRender }) : /* @__PURE__ */ jsx10(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs7(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
|
|
1234
|
+
/* @__PURE__ */ jsx10(LoginIcon_default, {}),
|
|
1235
|
+
/* @__PURE__ */ jsx10("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
|
|
1455
1236
|
id: "user"
|
|
1456
1237
|
}) })
|
|
1457
1238
|
] }) });
|
|
1458
1239
|
}
|
|
1459
1240
|
|
|
1460
1241
|
// src/components/UsernameModal/index.tsx
|
|
1461
|
-
import { useEffect as
|
|
1242
|
+
import { useEffect as useEffect4, useMemo as useMemo4, useState as useState7 } from "react";
|
|
1462
1243
|
|
|
1463
1244
|
// src/assets/icon/InfoRoundIcon.tsx
|
|
1464
|
-
import { jsx as
|
|
1245
|
+
import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1465
1246
|
function InfoRoundIcon({
|
|
1466
1247
|
size,
|
|
1467
1248
|
color = "#6E6E6E",
|
|
1468
1249
|
...props
|
|
1469
1250
|
}) {
|
|
1470
|
-
return /* @__PURE__ */
|
|
1471
|
-
/* @__PURE__ */
|
|
1251
|
+
return /* @__PURE__ */ jsxs8("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
|
|
1252
|
+
/* @__PURE__ */ jsx11("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ jsx11(
|
|
1472
1253
|
"path",
|
|
1473
1254
|
{
|
|
1474
1255
|
fillRule: "evenodd",
|
|
@@ -1477,21 +1258,21 @@ function InfoRoundIcon({
|
|
|
1477
1258
|
fill: color
|
|
1478
1259
|
}
|
|
1479
1260
|
) }),
|
|
1480
|
-
/* @__PURE__ */
|
|
1261
|
+
/* @__PURE__ */ jsx11("defs", { children: /* @__PURE__ */ jsx11("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ jsx11("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
1481
1262
|
] });
|
|
1482
1263
|
}
|
|
1483
1264
|
|
|
1484
1265
|
// src/components/UsernameModal/index.tsx
|
|
1485
|
-
import { FormattedMessage as
|
|
1486
|
-
import { jsx as
|
|
1266
|
+
import { FormattedMessage as FormattedMessage7, useIntl as useIntl7 } from "react-intl";
|
|
1267
|
+
import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1487
1268
|
var ValidItem = ({
|
|
1488
1269
|
success = false,
|
|
1489
1270
|
text
|
|
1490
1271
|
}) => {
|
|
1491
1272
|
const isDownMd = useDownMd();
|
|
1492
|
-
return /* @__PURE__ */
|
|
1493
|
-
success ? /* @__PURE__ */
|
|
1494
|
-
/* @__PURE__ */
|
|
1273
|
+
return /* @__PURE__ */ jsxs9("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
|
|
1274
|
+
success ? /* @__PURE__ */ jsx12(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx12(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
|
|
1275
|
+
/* @__PURE__ */ jsx12("span", { children: text })
|
|
1495
1276
|
] });
|
|
1496
1277
|
};
|
|
1497
1278
|
function UsernameModal({
|
|
@@ -1502,23 +1283,23 @@ function UsernameModal({
|
|
|
1502
1283
|
}) {
|
|
1503
1284
|
const { username, refreshOverview } = useUserInfo();
|
|
1504
1285
|
const { isLogin } = useUserInfo();
|
|
1505
|
-
const [val, setVal] =
|
|
1506
|
-
const [error, setError] =
|
|
1286
|
+
const [val, setVal] = useState7(username);
|
|
1287
|
+
const [error, setError] = useState7("");
|
|
1507
1288
|
const isDownMd = useDownMd();
|
|
1508
|
-
|
|
1289
|
+
useEffect4(() => {
|
|
1509
1290
|
if (isOpen) {
|
|
1510
1291
|
setVal(username);
|
|
1511
1292
|
setError("");
|
|
1512
1293
|
}
|
|
1513
1294
|
}, [isOpen]);
|
|
1514
|
-
const isValid =
|
|
1295
|
+
const isValid = useMemo4(() => {
|
|
1515
1296
|
return isValidUsername(val);
|
|
1516
1297
|
}, [val]);
|
|
1517
|
-
const isLength =
|
|
1298
|
+
const isLength = useMemo4(() => {
|
|
1518
1299
|
return val.length >= 2 && val.length <= 32;
|
|
1519
1300
|
}, [val]);
|
|
1520
1301
|
const isSafe = isValid && isLength;
|
|
1521
|
-
const [isSubmitting, setIsSubmitting] =
|
|
1302
|
+
const [isSubmitting, setIsSubmitting] = useState7(false);
|
|
1522
1303
|
const onSubmit = async () => {
|
|
1523
1304
|
if (isSubmitting) return;
|
|
1524
1305
|
try {
|
|
@@ -1538,13 +1319,13 @@ function UsernameModal({
|
|
|
1538
1319
|
setIsSubmitting(false);
|
|
1539
1320
|
}
|
|
1540
1321
|
};
|
|
1541
|
-
const intl =
|
|
1542
|
-
return /* @__PURE__ */
|
|
1322
|
+
const intl = useIntl7();
|
|
1323
|
+
return /* @__PURE__ */ jsx12(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
1543
1324
|
id: username ? "editUsernameTitle" : "setUsernameTitle"
|
|
1544
|
-
}), children: /* @__PURE__ */
|
|
1545
|
-
/* @__PURE__ */
|
|
1325
|
+
}), children: /* @__PURE__ */ jsxs9("div", { className: "matchid-username-box", children: [
|
|
1326
|
+
/* @__PURE__ */ jsx12(Field, { label: intl.formatMessage({
|
|
1546
1327
|
id: "username"
|
|
1547
|
-
}), error, children: /* @__PURE__ */
|
|
1328
|
+
}), error, children: /* @__PURE__ */ jsx12(
|
|
1548
1329
|
Input,
|
|
1549
1330
|
{
|
|
1550
1331
|
placeholder: intl.formatMessage({
|
|
@@ -1557,8 +1338,8 @@ function UsernameModal({
|
|
|
1557
1338
|
value: val
|
|
1558
1339
|
}
|
|
1559
1340
|
) }),
|
|
1560
|
-
/* @__PURE__ */
|
|
1561
|
-
/* @__PURE__ */
|
|
1341
|
+
/* @__PURE__ */ jsxs9("div", { className: "matchid-valid", children: [
|
|
1342
|
+
/* @__PURE__ */ jsx12(
|
|
1562
1343
|
ValidItem,
|
|
1563
1344
|
{
|
|
1564
1345
|
success: isValid,
|
|
@@ -1567,21 +1348,21 @@ function UsernameModal({
|
|
|
1567
1348
|
})
|
|
1568
1349
|
}
|
|
1569
1350
|
),
|
|
1570
|
-
/* @__PURE__ */
|
|
1351
|
+
/* @__PURE__ */ jsx12(ValidItem, { success: isLength, text: intl.formatMessage({
|
|
1571
1352
|
id: "usernameLengthError"
|
|
1572
1353
|
}) })
|
|
1573
1354
|
] }),
|
|
1574
|
-
/* @__PURE__ */
|
|
1355
|
+
/* @__PURE__ */ jsx12(Button, { disabled: !isSafe, loading: isSubmitting, style: {
|
|
1575
1356
|
marginTop: isDownMd ? "36px" : "64px"
|
|
1576
|
-
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */
|
|
1577
|
-
/* @__PURE__ */
|
|
1357
|
+
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ jsx12(FormattedMessage7, { id: "confirm" }) }),
|
|
1358
|
+
/* @__PURE__ */ jsx12(Button, { style: {
|
|
1578
1359
|
marginTop: isDownMd ? "12px" : "24px"
|
|
1579
|
-
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */
|
|
1360
|
+
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ jsx12(FormattedMessage7, { id: "cancel" }) })
|
|
1580
1361
|
] }) });
|
|
1581
1362
|
}
|
|
1582
1363
|
|
|
1583
1364
|
// src/components/SOLModal/index.tsx
|
|
1584
|
-
import React3, { useEffect as
|
|
1365
|
+
import React3, { useEffect as useEffect5, useState as useState8 } from "react";
|
|
1585
1366
|
|
|
1586
1367
|
// src/hooks/eventManager.ts
|
|
1587
1368
|
var EventManager = class {
|
|
@@ -1613,7 +1394,7 @@ var eventManager_default = eventManager;
|
|
|
1613
1394
|
|
|
1614
1395
|
// src/components/SOLModal/index.tsx
|
|
1615
1396
|
import { clusterApiUrl } from "@solana/web3.js";
|
|
1616
|
-
import { useWallet
|
|
1397
|
+
import { useWallet, WalletProvider, ConnectionProvider } from "@solana/wallet-adapter-react";
|
|
1617
1398
|
import { WalletModalProvider, useWalletModal } from "@solana/wallet-adapter-react-ui";
|
|
1618
1399
|
|
|
1619
1400
|
// node_modules/@solana/wallet-adapter-base/lib/esm/types.js
|
|
@@ -1662,10 +1443,10 @@ import {
|
|
|
1662
1443
|
XDEFIWalletAdapter
|
|
1663
1444
|
} from "@solana/wallet-adapter-wallets";
|
|
1664
1445
|
import "@solana/wallet-adapter-react-ui/styles.css";
|
|
1665
|
-
import { useIntl as
|
|
1446
|
+
import { useIntl as useIntl8 } from "react-intl";
|
|
1666
1447
|
|
|
1667
1448
|
// src/components/WalletModalContent/index.tsx
|
|
1668
|
-
import { useMemo as
|
|
1449
|
+
import { useMemo as useMemo5 } from "react";
|
|
1669
1450
|
|
|
1670
1451
|
// src/assets/wallet.ts
|
|
1671
1452
|
var walletErrorImage = "data:image/png;base64,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";
|
|
@@ -1675,7 +1456,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
1675
1456
|
var walletSigningImage = "data:image/png;base64,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";
|
|
1676
1457
|
|
|
1677
1458
|
// src/components/WalletModalContent/index.tsx
|
|
1678
|
-
import { jsx as
|
|
1459
|
+
import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1679
1460
|
function WalletModalContent({
|
|
1680
1461
|
status,
|
|
1681
1462
|
error,
|
|
@@ -1686,7 +1467,7 @@ function WalletModalContent({
|
|
|
1686
1467
|
address,
|
|
1687
1468
|
connected
|
|
1688
1469
|
}) {
|
|
1689
|
-
const pageData =
|
|
1470
|
+
const pageData = useMemo5(() => {
|
|
1690
1471
|
if (status == "success") {
|
|
1691
1472
|
return {
|
|
1692
1473
|
btnText: "Disconnect Wallet",
|
|
@@ -1745,12 +1526,12 @@ function WalletModalContent({
|
|
|
1745
1526
|
statusImage: walletConnectImage
|
|
1746
1527
|
};
|
|
1747
1528
|
}, [visible, connected, status, error, address]);
|
|
1748
|
-
return /* @__PURE__ */
|
|
1749
|
-
/* @__PURE__ */
|
|
1750
|
-
/* @__PURE__ */
|
|
1751
|
-
/* @__PURE__ */
|
|
1529
|
+
return /* @__PURE__ */ jsx13("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs10("div", { className: `matchid-wallet-box`, children: [
|
|
1530
|
+
/* @__PURE__ */ jsxs10("div", { className: `matchid-wallet-content`, children: [
|
|
1531
|
+
/* @__PURE__ */ jsx13("img", { src: pageData.statusImage }),
|
|
1532
|
+
/* @__PURE__ */ jsx13("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
|
|
1752
1533
|
] }),
|
|
1753
|
-
/* @__PURE__ */
|
|
1534
|
+
/* @__PURE__ */ jsx13(
|
|
1754
1535
|
Button,
|
|
1755
1536
|
{
|
|
1756
1537
|
block: true,
|
|
@@ -1765,25 +1546,25 @@ function WalletModalContent({
|
|
|
1765
1546
|
}
|
|
1766
1547
|
|
|
1767
1548
|
// src/components/SOLModal/index.tsx
|
|
1768
|
-
import { jsx as
|
|
1549
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
1769
1550
|
function WalletContent({
|
|
1770
1551
|
onSuccess,
|
|
1771
1552
|
type
|
|
1772
1553
|
}) {
|
|
1773
1554
|
const { setVisible, visible } = useWalletModal();
|
|
1774
|
-
const wallet =
|
|
1555
|
+
const wallet = useWallet();
|
|
1775
1556
|
const { events, login } = useMatch();
|
|
1776
|
-
const [status, setStatus] =
|
|
1557
|
+
const [status, setStatus] = useState8("");
|
|
1777
1558
|
const statusRef = React3.useRef(status);
|
|
1778
|
-
const [error, setError] =
|
|
1779
|
-
|
|
1559
|
+
const [error, setError] = useState8("");
|
|
1560
|
+
useEffect5(() => {
|
|
1780
1561
|
const init = async () => {
|
|
1781
1562
|
await wallet.disconnect();
|
|
1782
1563
|
setVisible(true);
|
|
1783
1564
|
};
|
|
1784
1565
|
init();
|
|
1785
1566
|
}, []);
|
|
1786
|
-
|
|
1567
|
+
useEffect5(() => {
|
|
1787
1568
|
if (wallet.connected) {
|
|
1788
1569
|
console.log("wallet.connected", wallet.connected);
|
|
1789
1570
|
toLoginInWallet();
|
|
@@ -1847,7 +1628,7 @@ function WalletContent({
|
|
|
1847
1628
|
statusRef.current = "";
|
|
1848
1629
|
}
|
|
1849
1630
|
};
|
|
1850
|
-
return /* @__PURE__ */
|
|
1631
|
+
return /* @__PURE__ */ jsx14(
|
|
1851
1632
|
WalletModalContent,
|
|
1852
1633
|
{
|
|
1853
1634
|
connected: wallet.connected,
|
|
@@ -1907,20 +1688,20 @@ function SOLConnectModal({
|
|
|
1907
1688
|
onSuccess,
|
|
1908
1689
|
...props
|
|
1909
1690
|
}) {
|
|
1910
|
-
const intl =
|
|
1911
|
-
return /* @__PURE__ */
|
|
1691
|
+
const intl = useIntl8();
|
|
1692
|
+
return /* @__PURE__ */ jsx14(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
1912
1693
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
1913
1694
|
}, {
|
|
1914
1695
|
name: "SOL"
|
|
1915
|
-
}), children: /* @__PURE__ */
|
|
1696
|
+
}), children: /* @__PURE__ */ jsx14(ConnectionProvider, { endpoint: clusterApiUrl("devnet"), children: /* @__PURE__ */ jsx14(WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ jsx14(WalletModalProvider, { children: /* @__PURE__ */ jsx14(WalletContent, { onSuccess, type }) }) }) }) });
|
|
1916
1697
|
}
|
|
1917
1698
|
function SOLModal(props) {
|
|
1918
|
-
return props.isOpen && /* @__PURE__ */
|
|
1699
|
+
return props.isOpen && /* @__PURE__ */ jsx14(SOLConnectModal, { ...props });
|
|
1919
1700
|
}
|
|
1920
1701
|
|
|
1921
1702
|
// src/components/TRONModal/index.tsx
|
|
1922
|
-
import React4, { useEffect as
|
|
1923
|
-
import { useIntl as
|
|
1703
|
+
import React4, { useEffect as useEffect7, useMemo as useMemo6, useState as useState10 } from "react";
|
|
1704
|
+
import { useIntl as useIntl9 } from "react-intl";
|
|
1924
1705
|
|
|
1925
1706
|
// src/lib/tron/TronLinkAdapter.ts
|
|
1926
1707
|
var TronLinkAdapter = class {
|
|
@@ -1953,7 +1734,7 @@ var TronLinkAdapter = class {
|
|
|
1953
1734
|
};
|
|
1954
1735
|
|
|
1955
1736
|
// src/hooks/useTRONWallet.ts
|
|
1956
|
-
import { useEffect as
|
|
1737
|
+
import { useEffect as useEffect6, useState as useState9 } from "react";
|
|
1957
1738
|
|
|
1958
1739
|
// src/lib/tron/BitgetAdapter.ts
|
|
1959
1740
|
var BitgetAdapter = class {
|
|
@@ -1998,9 +1779,9 @@ var OKXAdapter = class {
|
|
|
1998
1779
|
// src/hooks/useTRONWallet.ts
|
|
1999
1780
|
var useTRONWallet = () => {
|
|
2000
1781
|
const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
2001
|
-
const [installedWallets, setInstalledWallets] =
|
|
2002
|
-
const [address, setAddress] =
|
|
2003
|
-
|
|
1782
|
+
const [installedWallets, setInstalledWallets] = useState9([]);
|
|
1783
|
+
const [address, setAddress] = useState9(null);
|
|
1784
|
+
useEffect6(() => {
|
|
2004
1785
|
const getInstalled = async () => {
|
|
2005
1786
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
2006
1787
|
wallet: wallet2,
|
|
@@ -2010,11 +1791,11 @@ var useTRONWallet = () => {
|
|
|
2010
1791
|
};
|
|
2011
1792
|
getInstalled();
|
|
2012
1793
|
}, []);
|
|
2013
|
-
const [wallet, chooseWallet] =
|
|
1794
|
+
const [wallet, chooseWallet] = useState9(null);
|
|
2014
1795
|
const onConnect = async () => {
|
|
2015
1796
|
setAddress(await wallet.connect());
|
|
2016
1797
|
};
|
|
2017
|
-
|
|
1798
|
+
useEffect6(() => {
|
|
2018
1799
|
if (!wallet) {
|
|
2019
1800
|
setAddress(null);
|
|
2020
1801
|
}
|
|
@@ -2030,25 +1811,25 @@ var useTRONWallet = () => {
|
|
|
2030
1811
|
};
|
|
2031
1812
|
|
|
2032
1813
|
// src/components/TRONModal/index.tsx
|
|
2033
|
-
import { jsx as
|
|
1814
|
+
import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2034
1815
|
function TRONConnectModal({
|
|
2035
1816
|
type = "login",
|
|
2036
1817
|
onSuccess,
|
|
2037
1818
|
...props
|
|
2038
1819
|
}) {
|
|
2039
1820
|
const isDownMd = useDownMd();
|
|
2040
|
-
const intl =
|
|
1821
|
+
const intl = useIntl9();
|
|
2041
1822
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useTRONWallet();
|
|
2042
1823
|
const iconMaps = {
|
|
2043
|
-
tronlink: /* @__PURE__ */
|
|
2044
|
-
bitget: /* @__PURE__ */
|
|
2045
|
-
okx: /* @__PURE__ */
|
|
1824
|
+
tronlink: /* @__PURE__ */ jsx15(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1825
|
+
bitget: /* @__PURE__ */ jsx15(BitgetIcon, { size: isDownMd ? 36 : 40 }),
|
|
1826
|
+
okx: /* @__PURE__ */ jsx15(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
2046
1827
|
};
|
|
2047
1828
|
const { events, login } = useMatch();
|
|
2048
|
-
const [status, setStatus] =
|
|
1829
|
+
const [status, setStatus] = useState10("");
|
|
2049
1830
|
const statusRef = React4.useRef(status);
|
|
2050
|
-
const [error, setError] =
|
|
2051
|
-
const connected =
|
|
1831
|
+
const [error, setError] = useState10("");
|
|
1832
|
+
const connected = useMemo6(() => {
|
|
2052
1833
|
return !!address;
|
|
2053
1834
|
}, [address]);
|
|
2054
1835
|
const disconnect = async () => {
|
|
@@ -2116,7 +1897,7 @@ function TRONConnectModal({
|
|
|
2116
1897
|
statusRef.current = "";
|
|
2117
1898
|
}
|
|
2118
1899
|
};
|
|
2119
|
-
|
|
1900
|
+
useEffect7(() => {
|
|
2120
1901
|
if (wallet) {
|
|
2121
1902
|
console.log("onConnect");
|
|
2122
1903
|
onConnect();
|
|
@@ -2124,21 +1905,21 @@ function TRONConnectModal({
|
|
|
2124
1905
|
setStatus("");
|
|
2125
1906
|
}
|
|
2126
1907
|
}, [wallet]);
|
|
2127
|
-
|
|
1908
|
+
useEffect7(() => {
|
|
2128
1909
|
if (address) {
|
|
2129
1910
|
toLoginInWallet();
|
|
2130
1911
|
}
|
|
2131
1912
|
}, [address]);
|
|
2132
|
-
|
|
1913
|
+
useEffect7(() => {
|
|
2133
1914
|
if (!props.isOpen) {
|
|
2134
1915
|
disconnect();
|
|
2135
1916
|
}
|
|
2136
1917
|
}, [props.isOpen]);
|
|
2137
|
-
return /* @__PURE__ */
|
|
1918
|
+
return /* @__PURE__ */ jsx15(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
2138
1919
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
2139
1920
|
}, {
|
|
2140
1921
|
name: "TRON"
|
|
2141
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */
|
|
1922
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx15(
|
|
2142
1923
|
WalletModalContent,
|
|
2143
1924
|
{
|
|
2144
1925
|
error,
|
|
@@ -2151,9 +1932,9 @@ function TRONConnectModal({
|
|
|
2151
1932
|
setVisible: () => {
|
|
2152
1933
|
}
|
|
2153
1934
|
}
|
|
2154
|
-
) : /* @__PURE__ */
|
|
1935
|
+
) : /* @__PURE__ */ jsx15("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs11("div", { className: "matchid-login-recommend-list", children: [
|
|
2155
1936
|
installedWallets.map((wallet2) => {
|
|
2156
|
-
return /* @__PURE__ */
|
|
1937
|
+
return /* @__PURE__ */ jsx15(
|
|
2157
1938
|
RecommendItem,
|
|
2158
1939
|
{
|
|
2159
1940
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -2166,14 +1947,14 @@ function TRONConnectModal({
|
|
|
2166
1947
|
);
|
|
2167
1948
|
}),
|
|
2168
1949
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
2169
|
-
return /* @__PURE__ */
|
|
1950
|
+
return /* @__PURE__ */ jsx15(
|
|
2170
1951
|
RecommendItem,
|
|
2171
1952
|
{
|
|
2172
1953
|
icon: iconMaps[wallet2.walletKey],
|
|
2173
1954
|
name: wallet2.name,
|
|
2174
1955
|
onClick: () => {
|
|
2175
1956
|
},
|
|
2176
|
-
footer: /* @__PURE__ */
|
|
1957
|
+
footer: /* @__PURE__ */ jsx15(Button, { size: "sm", onClick: () => {
|
|
2177
1958
|
window.open(wallet2.website);
|
|
2178
1959
|
}, children: "Install" })
|
|
2179
1960
|
},
|
|
@@ -2183,12 +1964,12 @@ function TRONConnectModal({
|
|
|
2183
1964
|
] }) }) });
|
|
2184
1965
|
}
|
|
2185
1966
|
function TRONModal(props) {
|
|
2186
|
-
return props.isOpen && /* @__PURE__ */
|
|
1967
|
+
return props.isOpen && /* @__PURE__ */ jsx15(TRONConnectModal, { ...props, type: "" });
|
|
2187
1968
|
}
|
|
2188
1969
|
|
|
2189
1970
|
// src/components/TONModal/index.tsx
|
|
2190
|
-
import React5, { useEffect as
|
|
2191
|
-
import { useIntl as
|
|
1971
|
+
import React5, { useEffect as useEffect8, useState as useState11 } from "react";
|
|
1972
|
+
import { useIntl as useIntl10 } from "react-intl";
|
|
2192
1973
|
import {
|
|
2193
1974
|
TonConnectUIProvider,
|
|
2194
1975
|
useTonAddress,
|
|
@@ -2196,21 +1977,21 @@ import {
|
|
|
2196
1977
|
useTonConnectUI,
|
|
2197
1978
|
useTonWallet
|
|
2198
1979
|
} from "@tonconnect/ui-react";
|
|
2199
|
-
import { jsx as
|
|
1980
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
2200
1981
|
function WalletContent2({
|
|
2201
1982
|
onSuccess,
|
|
2202
1983
|
type
|
|
2203
1984
|
}) {
|
|
2204
1985
|
const { events, login } = useMatch();
|
|
2205
|
-
const [connected, setConnected] =
|
|
1986
|
+
const [connected, setConnected] = useState11(false);
|
|
2206
1987
|
const wallet = useTonWallet();
|
|
2207
1988
|
const userFriendlyAddress = useTonAddress();
|
|
2208
1989
|
const [tonConnectUI] = useTonConnectUI();
|
|
2209
1990
|
const { state, open, close } = useTonConnectModal();
|
|
2210
|
-
const [status, setStatus] =
|
|
1991
|
+
const [status, setStatus] = useState11("");
|
|
2211
1992
|
const statusRef = React5.useRef(status);
|
|
2212
|
-
const [error, setError] =
|
|
2213
|
-
|
|
1993
|
+
const [error, setError] = useState11("");
|
|
1994
|
+
useEffect8(() => {
|
|
2214
1995
|
const init = async () => {
|
|
2215
1996
|
if (wallet) {
|
|
2216
1997
|
await tonConnectUI.disconnect();
|
|
@@ -2283,7 +2064,7 @@ function WalletContent2({
|
|
|
2283
2064
|
}
|
|
2284
2065
|
});
|
|
2285
2066
|
}, []);
|
|
2286
|
-
|
|
2067
|
+
useEffect8(() => {
|
|
2287
2068
|
if (wallet) {
|
|
2288
2069
|
setConnected(true);
|
|
2289
2070
|
console.log("Wallet connected:", wallet);
|
|
@@ -2294,7 +2075,7 @@ function WalletContent2({
|
|
|
2294
2075
|
setStatus("");
|
|
2295
2076
|
}
|
|
2296
2077
|
}, [wallet]);
|
|
2297
|
-
|
|
2078
|
+
useEffect8(() => {
|
|
2298
2079
|
console.log({
|
|
2299
2080
|
state,
|
|
2300
2081
|
wallet
|
|
@@ -2323,7 +2104,7 @@ function WalletContent2({
|
|
|
2323
2104
|
}
|
|
2324
2105
|
}
|
|
2325
2106
|
}, [state]);
|
|
2326
|
-
return /* @__PURE__ */
|
|
2107
|
+
return /* @__PURE__ */ jsx16(
|
|
2327
2108
|
WalletModalContent,
|
|
2328
2109
|
{
|
|
2329
2110
|
connected,
|
|
@@ -2354,28 +2135,28 @@ function TONConnectModal({
|
|
|
2354
2135
|
onSuccess,
|
|
2355
2136
|
...props
|
|
2356
2137
|
}) {
|
|
2357
|
-
const intl =
|
|
2138
|
+
const intl = useIntl10();
|
|
2358
2139
|
const { endpoints, appid } = useLocalStore_default();
|
|
2359
2140
|
const manifestUrl = `${endpoints.back}api/v1/wallet/ton?appid=${appid}&url=` + encodeURIComponent(window.location.origin);
|
|
2360
|
-
return /* @__PURE__ */
|
|
2141
|
+
return /* @__PURE__ */ jsx16(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
2361
2142
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
2362
2143
|
}, {
|
|
2363
2144
|
name: "TON"
|
|
2364
|
-
}), children: /* @__PURE__ */
|
|
2145
|
+
}), children: /* @__PURE__ */ jsx16(
|
|
2365
2146
|
TonConnectUIProvider,
|
|
2366
2147
|
{
|
|
2367
2148
|
manifestUrl,
|
|
2368
|
-
children: /* @__PURE__ */
|
|
2149
|
+
children: /* @__PURE__ */ jsx16(WalletContent2, { onSuccess, type })
|
|
2369
2150
|
}
|
|
2370
2151
|
) });
|
|
2371
2152
|
}
|
|
2372
2153
|
function TONModal(props) {
|
|
2373
|
-
return props.isOpen && /* @__PURE__ */
|
|
2154
|
+
return props.isOpen && /* @__PURE__ */ jsx16(TONConnectModal, { ...props });
|
|
2374
2155
|
}
|
|
2375
2156
|
|
|
2376
2157
|
// src/components/BTCModal/index.tsx
|
|
2377
|
-
import React6, { useEffect as
|
|
2378
|
-
import { useIntl as
|
|
2158
|
+
import React6, { useEffect as useEffect10, useMemo as useMemo7, useState as useState13 } from "react";
|
|
2159
|
+
import { useIntl as useIntl11 } from "react-intl";
|
|
2379
2160
|
|
|
2380
2161
|
// src/lib/btc/UnisatAdapter.ts
|
|
2381
2162
|
var UnisatAdapter = class {
|
|
@@ -2529,12 +2310,12 @@ var LeatherAdapter = class {
|
|
|
2529
2310
|
};
|
|
2530
2311
|
|
|
2531
2312
|
// src/hooks/useBTCWallet.ts
|
|
2532
|
-
import { useEffect as
|
|
2313
|
+
import { useEffect as useEffect9, useState as useState12 } from "react";
|
|
2533
2314
|
var useBTCWallet = () => {
|
|
2534
2315
|
const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
|
|
2535
|
-
const [installedWallets, setInstalledWallets] =
|
|
2536
|
-
const [address, setAddress] =
|
|
2537
|
-
|
|
2316
|
+
const [installedWallets, setInstalledWallets] = useState12([]);
|
|
2317
|
+
const [address, setAddress] = useState12(null);
|
|
2318
|
+
useEffect9(() => {
|
|
2538
2319
|
const getInstalled = async () => {
|
|
2539
2320
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
2540
2321
|
wallet: wallet2,
|
|
@@ -2544,11 +2325,11 @@ var useBTCWallet = () => {
|
|
|
2544
2325
|
};
|
|
2545
2326
|
getInstalled();
|
|
2546
2327
|
}, []);
|
|
2547
|
-
const [wallet, chooseWallet] =
|
|
2328
|
+
const [wallet, chooseWallet] = useState12(null);
|
|
2548
2329
|
const onConnect = async () => {
|
|
2549
2330
|
setAddress(await wallet.connect());
|
|
2550
2331
|
};
|
|
2551
|
-
|
|
2332
|
+
useEffect9(() => {
|
|
2552
2333
|
if (!wallet) {
|
|
2553
2334
|
setAddress(null);
|
|
2554
2335
|
}
|
|
@@ -2564,25 +2345,25 @@ var useBTCWallet = () => {
|
|
|
2564
2345
|
};
|
|
2565
2346
|
|
|
2566
2347
|
// src/components/BTCModal/index.tsx
|
|
2567
|
-
import { jsx as
|
|
2348
|
+
import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2568
2349
|
function BTCConnectModal({
|
|
2569
2350
|
type = "login",
|
|
2570
2351
|
onSuccess,
|
|
2571
2352
|
...props
|
|
2572
2353
|
}) {
|
|
2573
2354
|
const isDownMd = useDownMd();
|
|
2574
|
-
const intl =
|
|
2355
|
+
const intl = useIntl11();
|
|
2575
2356
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useBTCWallet();
|
|
2576
2357
|
const iconMaps = {
|
|
2577
|
-
leather: /* @__PURE__ */
|
|
2578
|
-
unisat: /* @__PURE__ */
|
|
2579
|
-
xverse: /* @__PURE__ */
|
|
2358
|
+
leather: /* @__PURE__ */ jsx17(LeatherIcon, { size: isDownMd ? 36 : 40 }),
|
|
2359
|
+
unisat: /* @__PURE__ */ jsx17(UnisatIcon, { size: isDownMd ? 36 : 40 }),
|
|
2360
|
+
xverse: /* @__PURE__ */ jsx17(XverseIcon, { size: isDownMd ? 36 : 40 })
|
|
2580
2361
|
};
|
|
2581
2362
|
const { events, login } = useMatch();
|
|
2582
|
-
const [status, setStatus] =
|
|
2363
|
+
const [status, setStatus] = useState13("");
|
|
2583
2364
|
const statusRef = React6.useRef(status);
|
|
2584
|
-
const [error, setError] =
|
|
2585
|
-
const connected =
|
|
2365
|
+
const [error, setError] = useState13("");
|
|
2366
|
+
const connected = useMemo7(() => {
|
|
2586
2367
|
return !!address;
|
|
2587
2368
|
}, [address]);
|
|
2588
2369
|
const disconnect = async () => {
|
|
@@ -2646,7 +2427,7 @@ function BTCConnectModal({
|
|
|
2646
2427
|
statusRef.current = "";
|
|
2647
2428
|
}
|
|
2648
2429
|
};
|
|
2649
|
-
|
|
2430
|
+
useEffect10(() => {
|
|
2650
2431
|
if (wallet) {
|
|
2651
2432
|
console.log("onConnect");
|
|
2652
2433
|
try {
|
|
@@ -2659,12 +2440,12 @@ function BTCConnectModal({
|
|
|
2659
2440
|
setStatus("");
|
|
2660
2441
|
}
|
|
2661
2442
|
}, [wallet]);
|
|
2662
|
-
|
|
2443
|
+
useEffect10(() => {
|
|
2663
2444
|
if (address) {
|
|
2664
2445
|
toLoginInWallet();
|
|
2665
2446
|
}
|
|
2666
2447
|
}, [address]);
|
|
2667
|
-
|
|
2448
|
+
useEffect10(() => {
|
|
2668
2449
|
if (!props.isOpen) {
|
|
2669
2450
|
disconnect();
|
|
2670
2451
|
}
|
|
@@ -2676,11 +2457,11 @@ function BTCConnectModal({
|
|
|
2676
2457
|
statusRef.current = "";
|
|
2677
2458
|
setError("");
|
|
2678
2459
|
};
|
|
2679
|
-
return /* @__PURE__ */
|
|
2460
|
+
return /* @__PURE__ */ jsx17(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
2680
2461
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
2681
2462
|
}, {
|
|
2682
2463
|
name: "BTC"
|
|
2683
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */
|
|
2464
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx17(
|
|
2684
2465
|
WalletModalContent,
|
|
2685
2466
|
{
|
|
2686
2467
|
error,
|
|
@@ -2693,9 +2474,9 @@ function BTCConnectModal({
|
|
|
2693
2474
|
setVisible: () => {
|
|
2694
2475
|
}
|
|
2695
2476
|
}
|
|
2696
|
-
) : /* @__PURE__ */
|
|
2477
|
+
) : /* @__PURE__ */ jsx17("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs12("div", { className: "matchid-login-recommend-list", children: [
|
|
2697
2478
|
installedWallets.map((wallet2) => {
|
|
2698
|
-
return /* @__PURE__ */
|
|
2479
|
+
return /* @__PURE__ */ jsx17(
|
|
2699
2480
|
RecommendItem,
|
|
2700
2481
|
{
|
|
2701
2482
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -2708,14 +2489,14 @@ function BTCConnectModal({
|
|
|
2708
2489
|
);
|
|
2709
2490
|
}),
|
|
2710
2491
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
2711
|
-
return /* @__PURE__ */
|
|
2492
|
+
return /* @__PURE__ */ jsx17(
|
|
2712
2493
|
RecommendItem,
|
|
2713
2494
|
{
|
|
2714
2495
|
icon: iconMaps[wallet2.walletKey],
|
|
2715
2496
|
name: wallet2.name,
|
|
2716
2497
|
onClick: () => {
|
|
2717
2498
|
},
|
|
2718
|
-
footer: /* @__PURE__ */
|
|
2499
|
+
footer: /* @__PURE__ */ jsx17(Button, { size: "sm", onClick: () => {
|
|
2719
2500
|
window.open(wallet2.website);
|
|
2720
2501
|
}, children: "Install" })
|
|
2721
2502
|
},
|
|
@@ -2725,23 +2506,23 @@ function BTCConnectModal({
|
|
|
2725
2506
|
] }) }) });
|
|
2726
2507
|
}
|
|
2727
2508
|
function BTCModal(props) {
|
|
2728
|
-
return props.isOpen && /* @__PURE__ */
|
|
2509
|
+
return props.isOpen && /* @__PURE__ */ jsx17(BTCConnectModal, { ...props });
|
|
2729
2510
|
}
|
|
2730
2511
|
|
|
2731
2512
|
// src/components/WalletModal/index.tsx
|
|
2732
|
-
import { useMemo as
|
|
2733
|
-
import { useIntl as
|
|
2734
|
-
import { jsx as
|
|
2513
|
+
import { useMemo as useMemo8 } from "react";
|
|
2514
|
+
import { useIntl as useIntl12 } from "react-intl";
|
|
2515
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
2735
2516
|
function WalletConnectModal({
|
|
2736
2517
|
type,
|
|
2737
2518
|
methods: _methods,
|
|
2738
2519
|
...props
|
|
2739
2520
|
}) {
|
|
2740
|
-
const intl =
|
|
2521
|
+
const intl = useIntl12();
|
|
2741
2522
|
const { walletMap } = useWalletConfig();
|
|
2742
2523
|
const { bind, login } = useUserInfo();
|
|
2743
2524
|
const config = useAppConfig();
|
|
2744
|
-
const methods =
|
|
2525
|
+
const methods = useMemo8(() => {
|
|
2745
2526
|
if (_methods) return _methods;
|
|
2746
2527
|
if (!config.platform) {
|
|
2747
2528
|
return [];
|
|
@@ -2749,13 +2530,13 @@ function WalletConnectModal({
|
|
|
2749
2530
|
const platform = config.platform.map((p) => p.toLowerCase());
|
|
2750
2531
|
return WALLET_METHODS.filter((m) => platform.includes(m));
|
|
2751
2532
|
}, [config.platform, _methods]);
|
|
2752
|
-
return /* @__PURE__ */
|
|
2533
|
+
return /* @__PURE__ */ jsx18(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
2753
2534
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
2754
2535
|
}, {
|
|
2755
2536
|
name: ""
|
|
2756
|
-
}), children: /* @__PURE__ */
|
|
2537
|
+
}), children: /* @__PURE__ */ jsx18("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsx18("div", { className: "matchid-login-recommend-list", children: methods.map((method, index) => {
|
|
2757
2538
|
const m = walletMap[method];
|
|
2758
|
-
return /* @__PURE__ */
|
|
2539
|
+
return /* @__PURE__ */ jsx18(
|
|
2759
2540
|
RecommendItem,
|
|
2760
2541
|
{
|
|
2761
2542
|
icon: m?.icon,
|
|
@@ -2769,31 +2550,31 @@ function WalletConnectModal({
|
|
|
2769
2550
|
}) }) }) });
|
|
2770
2551
|
}
|
|
2771
2552
|
function WalletModal(props) {
|
|
2772
|
-
return props.isOpen && /* @__PURE__ */
|
|
2553
|
+
return props.isOpen && /* @__PURE__ */ jsx18(WalletConnectModal, { ...props });
|
|
2773
2554
|
}
|
|
2774
2555
|
|
|
2775
2556
|
// src/components/CEXBindModal/index.tsx
|
|
2776
|
-
import { useEffect as
|
|
2777
|
-
import { FormattedMessage as
|
|
2778
|
-
import { jsx as
|
|
2557
|
+
import { useEffect as useEffect11, useMemo as useMemo9, useState as useState14 } from "react";
|
|
2558
|
+
import { FormattedMessage as FormattedMessage8, useIntl as useIntl13 } from "react-intl";
|
|
2559
|
+
import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2779
2560
|
function CEXBindModal({
|
|
2780
2561
|
onClose,
|
|
2781
2562
|
type,
|
|
2782
2563
|
isOpen = false,
|
|
2783
2564
|
...props
|
|
2784
2565
|
}) {
|
|
2785
|
-
const intl =
|
|
2566
|
+
const intl = useIntl13();
|
|
2786
2567
|
const { events } = useMatch();
|
|
2787
|
-
const [APIPassphrase, setAPIPassphrase] =
|
|
2568
|
+
const [APIPassphrase, setAPIPassphrase] = useState14("");
|
|
2788
2569
|
const { refreshOverview } = useUserInfo();
|
|
2789
|
-
const [loading, setLoading] =
|
|
2790
|
-
const [key, setKey] =
|
|
2791
|
-
const [secret, setSecret] =
|
|
2792
|
-
const [error, setError] =
|
|
2793
|
-
const needPassphrase =
|
|
2570
|
+
const [loading, setLoading] = useState14(false);
|
|
2571
|
+
const [key, setKey] = useState14("");
|
|
2572
|
+
const [secret, setSecret] = useState14("");
|
|
2573
|
+
const [error, setError] = useState14("");
|
|
2574
|
+
const needPassphrase = useMemo9(() => {
|
|
2794
2575
|
return ["bitget", "okx"].includes(type.toLowerCase());
|
|
2795
2576
|
}, [type]);
|
|
2796
|
-
|
|
2577
|
+
useEffect11(() => {
|
|
2797
2578
|
if (isOpen) {
|
|
2798
2579
|
setSecret("");
|
|
2799
2580
|
setKey("");
|
|
@@ -2830,20 +2611,20 @@ function CEXBindModal({
|
|
|
2830
2611
|
setLoading(false);
|
|
2831
2612
|
}
|
|
2832
2613
|
};
|
|
2833
|
-
return /* @__PURE__ */
|
|
2614
|
+
return /* @__PURE__ */ jsx19(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
|
|
2834
2615
|
id: "CEXBindTitle"
|
|
2835
2616
|
}, {
|
|
2836
2617
|
type
|
|
2837
|
-
}), ...props, children: /* @__PURE__ */
|
|
2838
|
-
/* @__PURE__ */
|
|
2839
|
-
/* @__PURE__ */
|
|
2840
|
-
/* @__PURE__ */
|
|
2841
|
-
/* @__PURE__ */
|
|
2842
|
-
/* @__PURE__ */
|
|
2618
|
+
}), ...props, children: /* @__PURE__ */ jsxs13("div", { className: "matchid-cex-modal", children: [
|
|
2619
|
+
/* @__PURE__ */ jsxs13("div", { children: [
|
|
2620
|
+
/* @__PURE__ */ jsx19("p", { children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "CEXBindAttention" }) }),
|
|
2621
|
+
/* @__PURE__ */ jsx19("p", { children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "CEXBindTips1" }) }),
|
|
2622
|
+
/* @__PURE__ */ jsx19("p", { children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "CEXBindTips2" }) }),
|
|
2623
|
+
/* @__PURE__ */ jsx19("p", { children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "CEXBindTips3" }) })
|
|
2843
2624
|
] }),
|
|
2844
|
-
/* @__PURE__ */
|
|
2625
|
+
/* @__PURE__ */ jsx19(Field, { label: intl.formatMessage({
|
|
2845
2626
|
id: "CEXBindApiKey"
|
|
2846
|
-
}), children: /* @__PURE__ */
|
|
2627
|
+
}), children: /* @__PURE__ */ jsx19(
|
|
2847
2628
|
Input,
|
|
2848
2629
|
{
|
|
2849
2630
|
value: key,
|
|
@@ -2851,9 +2632,9 @@ function CEXBindModal({
|
|
|
2851
2632
|
placeholder: "**** **** ****"
|
|
2852
2633
|
}
|
|
2853
2634
|
) }),
|
|
2854
|
-
/* @__PURE__ */
|
|
2635
|
+
/* @__PURE__ */ jsx19(Field, { label: intl.formatMessage({
|
|
2855
2636
|
id: "CEXBindApiSecretKey"
|
|
2856
|
-
}), error: !needPassphrase && error, children: /* @__PURE__ */
|
|
2637
|
+
}), error: !needPassphrase && error, children: /* @__PURE__ */ jsx19(
|
|
2857
2638
|
Input,
|
|
2858
2639
|
{
|
|
2859
2640
|
value: secret,
|
|
@@ -2861,9 +2642,9 @@ function CEXBindModal({
|
|
|
2861
2642
|
placeholder: "**** **** ****"
|
|
2862
2643
|
}
|
|
2863
2644
|
) }),
|
|
2864
|
-
needPassphrase && /* @__PURE__ */
|
|
2645
|
+
needPassphrase && /* @__PURE__ */ jsx19(Field, { error, label: intl.formatMessage({
|
|
2865
2646
|
id: "CEXBindApiPassphrase"
|
|
2866
|
-
}), children: /* @__PURE__ */
|
|
2647
|
+
}), children: /* @__PURE__ */ jsx19(
|
|
2867
2648
|
Input,
|
|
2868
2649
|
{
|
|
2869
2650
|
value: APIPassphrase,
|
|
@@ -2871,7 +2652,7 @@ function CEXBindModal({
|
|
|
2871
2652
|
placeholder: "**** **** ****"
|
|
2872
2653
|
}
|
|
2873
2654
|
) }),
|
|
2874
|
-
/* @__PURE__ */
|
|
2655
|
+
/* @__PURE__ */ jsx19(
|
|
2875
2656
|
Button,
|
|
2876
2657
|
{
|
|
2877
2658
|
onClick: SubmitApi,
|
|
@@ -2879,19 +2660,16 @@ function CEXBindModal({
|
|
|
2879
2660
|
block: true,
|
|
2880
2661
|
loading,
|
|
2881
2662
|
disabled: !key || !secret,
|
|
2882
|
-
children: /* @__PURE__ */
|
|
2663
|
+
children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "continue" })
|
|
2883
2664
|
}
|
|
2884
2665
|
)
|
|
2885
2666
|
] }) });
|
|
2886
2667
|
}
|
|
2887
2668
|
|
|
2888
2669
|
// src/context/BusinessProvider.tsx
|
|
2889
|
-
import { Fragment as Fragment3, jsx as
|
|
2670
|
+
import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2890
2671
|
function BusinessProvider({ children }) {
|
|
2891
|
-
const { overview, token
|
|
2892
|
-
const { recoveryModal, walletReady } = useStore_default();
|
|
2893
|
-
const { wallet: walletConfig } = useLocalStore_default();
|
|
2894
|
-
const { generateEmbeddedWallets, initCore } = useWallet();
|
|
2672
|
+
const { overview, token } = useUserInfo();
|
|
2895
2673
|
const { type: SOLType, isOpen: SOLIsOpen, close: SOLClose } = useSOLModalStore();
|
|
2896
2674
|
const { type: TONType, isOpen: TONIsOpen, close: TONClose } = useTONModalStore();
|
|
2897
2675
|
const { type: TRONType, isOpen: TRONIsOpen, close: TRONClose } = useTRONModalStore();
|
|
@@ -2899,47 +2677,12 @@ function BusinessProvider({ children }) {
|
|
|
2899
2677
|
const { type: CEXType, isOpen: CEXIsOpen, close: CEXClose } = useCEXBindModalStore();
|
|
2900
2678
|
const WalletModalStore = useWalletModalStore();
|
|
2901
2679
|
const { close: HashPanelClose, ...hashPanelProps } = useHashPanelStore();
|
|
2902
|
-
useEffect14(() => {
|
|
2903
|
-
if (token && overview && !overview.address && overview.did && walletConfig.type == "Base" && walletReady) {
|
|
2904
|
-
const onGenerate = async () => {
|
|
2905
|
-
const did = overview ? overview.did.split(":")[2] : "";
|
|
2906
|
-
await initCore({
|
|
2907
|
-
did,
|
|
2908
|
-
address: ""
|
|
2909
|
-
});
|
|
2910
|
-
await generateEmbeddedWallets({
|
|
2911
|
-
recoveryType: "base_generated_recovery_key" /* Base */,
|
|
2912
|
-
chainType: "ethereum" /* Ethereum */,
|
|
2913
|
-
userPasscode: ""
|
|
2914
|
-
});
|
|
2915
|
-
await refreshOverview();
|
|
2916
|
-
};
|
|
2917
|
-
onGenerate();
|
|
2918
|
-
}
|
|
2919
|
-
}, [token, overview, walletConfig, walletReady]);
|
|
2920
2680
|
const walletModalClose = (func) => {
|
|
2921
2681
|
WalletModalStore.close();
|
|
2922
2682
|
func();
|
|
2923
2683
|
};
|
|
2924
|
-
return /* @__PURE__ */
|
|
2925
|
-
/* @__PURE__ */
|
|
2926
|
-
PasswordModal,
|
|
2927
|
-
{
|
|
2928
|
-
isOpen: !!token && !!overview && !overview.address && !!overview.did && walletConfig.type == "UserPasscode",
|
|
2929
|
-
showClose: false
|
|
2930
|
-
}
|
|
2931
|
-
),
|
|
2932
|
-
/* @__PURE__ */ jsx22(
|
|
2933
|
-
RecoveryModal,
|
|
2934
|
-
{
|
|
2935
|
-
isOpen: !!token && !!overview && !!overview.address && recoveryModal.open,
|
|
2936
|
-
onClose: recoveryModal.close,
|
|
2937
|
-
onSuccess: recoveryModal.success,
|
|
2938
|
-
recoveryType: "user_passcode_recovery_key" /* UserPasscode */,
|
|
2939
|
-
chainType: recoveryModal.chainType
|
|
2940
|
-
}
|
|
2941
|
-
),
|
|
2942
|
-
/* @__PURE__ */ jsx22(
|
|
2684
|
+
return /* @__PURE__ */ jsxs14(Fragment3, { children: [
|
|
2685
|
+
/* @__PURE__ */ jsx20(
|
|
2943
2686
|
SOLModal,
|
|
2944
2687
|
{
|
|
2945
2688
|
isOpen: SOLIsOpen && (SOLType == "login" && !overview && !token || SOLType == "bind" && !!token && !!overview),
|
|
@@ -2949,7 +2692,7 @@ function BusinessProvider({ children }) {
|
|
|
2949
2692
|
zIndex: 199
|
|
2950
2693
|
}
|
|
2951
2694
|
),
|
|
2952
|
-
/* @__PURE__ */
|
|
2695
|
+
/* @__PURE__ */ jsx20(
|
|
2953
2696
|
TRONModal,
|
|
2954
2697
|
{
|
|
2955
2698
|
isOpen: TRONIsOpen && (TRONType == "login" && !overview && !token || TRONType == "bind" && !!token && !!overview),
|
|
@@ -2959,7 +2702,7 @@ function BusinessProvider({ children }) {
|
|
|
2959
2702
|
zIndex: 199
|
|
2960
2703
|
}
|
|
2961
2704
|
),
|
|
2962
|
-
/* @__PURE__ */
|
|
2705
|
+
/* @__PURE__ */ jsx20(
|
|
2963
2706
|
TONModal,
|
|
2964
2707
|
{
|
|
2965
2708
|
isOpen: TONIsOpen && (TONType == "login" && !overview && !token || TONType == "bind" && !!token && !!overview),
|
|
@@ -2969,7 +2712,7 @@ function BusinessProvider({ children }) {
|
|
|
2969
2712
|
zIndex: 199
|
|
2970
2713
|
}
|
|
2971
2714
|
),
|
|
2972
|
-
/* @__PURE__ */
|
|
2715
|
+
/* @__PURE__ */ jsx20(
|
|
2973
2716
|
BTCModal,
|
|
2974
2717
|
{
|
|
2975
2718
|
isOpen: BTCIsOpen && (BTCType == "login" && !overview && !token || BTCType == "bind" && !!token && !!overview),
|
|
@@ -2979,7 +2722,7 @@ function BusinessProvider({ children }) {
|
|
|
2979
2722
|
zIndex: 199
|
|
2980
2723
|
}
|
|
2981
2724
|
),
|
|
2982
|
-
/* @__PURE__ */
|
|
2725
|
+
/* @__PURE__ */ jsx20(
|
|
2983
2726
|
CEXBindModal,
|
|
2984
2727
|
{
|
|
2985
2728
|
isOpen: CEXIsOpen && (!!token && !!overview),
|
|
@@ -2988,8 +2731,8 @@ function BusinessProvider({ children }) {
|
|
|
2988
2731
|
zIndex: 199
|
|
2989
2732
|
}
|
|
2990
2733
|
),
|
|
2991
|
-
/* @__PURE__ */
|
|
2992
|
-
/* @__PURE__ */
|
|
2734
|
+
/* @__PURE__ */ jsx20(HashPanel_default, { onClose: HashPanelClose, ...hashPanelProps }),
|
|
2735
|
+
/* @__PURE__ */ jsx20(
|
|
2993
2736
|
WalletModal,
|
|
2994
2737
|
{
|
|
2995
2738
|
isOpen: WalletModalStore.isOpen && (WalletModalStore.type == "login" && !overview && !token || WalletModalStore.type == "bind" && !!token && !!overview),
|
|
@@ -3004,312 +2747,17 @@ function BusinessProvider({ children }) {
|
|
|
3004
2747
|
}
|
|
3005
2748
|
|
|
3006
2749
|
// src/context/index.tsx
|
|
3007
|
-
import { jsx as
|
|
2750
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
3008
2751
|
var Providers = ({ children }) => {
|
|
3009
2752
|
return (
|
|
3010
2753
|
// <MpcWalletProvider>
|
|
3011
|
-
/* @__PURE__ */
|
|
2754
|
+
/* @__PURE__ */ jsx21(BusinessProvider, { children })
|
|
3012
2755
|
);
|
|
3013
2756
|
};
|
|
3014
2757
|
var context_default = Providers;
|
|
3015
2758
|
|
|
3016
2759
|
// src/hooks/useWalletInit.ts
|
|
3017
|
-
import { useEffect as
|
|
3018
|
-
|
|
3019
|
-
// src/hooks/useWallet.tsx
|
|
3020
|
-
import {
|
|
3021
|
-
encodeFunctionData
|
|
3022
|
-
} from "viem";
|
|
3023
|
-
import { toAccount } from "viem/accounts";
|
|
3024
|
-
import { createWalletClient } from "viem";
|
|
3025
|
-
import { useEffect as useEffect15, useMemo as useMemo12 } from "react";
|
|
3026
|
-
import { encodeDeployData } from "viem";
|
|
3027
|
-
var AppClientId = "react-sdk-" + getVersion();
|
|
3028
|
-
function useWallet() {
|
|
3029
|
-
const { appid, token, overview, address, wallet: walletConfig } = useLocalStore_default();
|
|
3030
|
-
const { setRecoveryModal, closeRecoveryModal, walletReady } = useStore_default();
|
|
3031
|
-
const { open: openHashPanel } = useHashPanelStore();
|
|
3032
|
-
const initCore = ({
|
|
3033
|
-
did,
|
|
3034
|
-
address: address2
|
|
3035
|
-
}) => {
|
|
3036
|
-
return window.matchProvider.waitUntilWalletMessage(
|
|
3037
|
-
{
|
|
3038
|
-
method: "initCore",
|
|
3039
|
-
data: {
|
|
3040
|
-
AppId: appid,
|
|
3041
|
-
AppClientId,
|
|
3042
|
-
UserId: did,
|
|
3043
|
-
AccessToken: token,
|
|
3044
|
-
Address: address2
|
|
3045
|
-
}
|
|
3046
|
-
}
|
|
3047
|
-
);
|
|
3048
|
-
};
|
|
3049
|
-
const generateEmbeddedWallets = async (data) => {
|
|
3050
|
-
return await window.matchProvider.waitUntilWalletMessage({
|
|
3051
|
-
method: "generateEmbeddedWallets",
|
|
3052
|
-
data
|
|
3053
|
-
});
|
|
3054
|
-
};
|
|
3055
|
-
const recoveryEmbeddedWallets = async (data) => {
|
|
3056
|
-
return await window.matchProvider.waitUntilWalletMessage({
|
|
3057
|
-
method: "recoveryEmbeddedWallets",
|
|
3058
|
-
data
|
|
3059
|
-
});
|
|
3060
|
-
};
|
|
3061
|
-
const isRecovered = async () => {
|
|
3062
|
-
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
3063
|
-
method: "isRecovered"
|
|
3064
|
-
});
|
|
3065
|
-
return res.isRecovered;
|
|
3066
|
-
};
|
|
3067
|
-
const recoverAfter = async ({
|
|
3068
|
-
chainType,
|
|
3069
|
-
handle
|
|
3070
|
-
}) => {
|
|
3071
|
-
return new Promise(async (resolve, reject) => {
|
|
3072
|
-
const res = await isRecovered();
|
|
3073
|
-
matchlog_default.log("sdk.mpc.isRecovered", res);
|
|
3074
|
-
if (res) {
|
|
3075
|
-
await recoveryEmbeddedWallets({ chainType, recoveryType: "user_passcode_recovery_key" });
|
|
3076
|
-
await handle(resolve, reject);
|
|
3077
|
-
return;
|
|
3078
|
-
}
|
|
3079
|
-
setRecoveryModal({
|
|
3080
|
-
chainType,
|
|
3081
|
-
open: true,
|
|
3082
|
-
success: async () => {
|
|
3083
|
-
closeRecoveryModal();
|
|
3084
|
-
matchlog_default.log("sdk.mpc.recover", "Success");
|
|
3085
|
-
await handle(resolve, reject);
|
|
3086
|
-
},
|
|
3087
|
-
close: async () => {
|
|
3088
|
-
closeRecoveryModal();
|
|
3089
|
-
reject(new Error("recover modal close"));
|
|
3090
|
-
}
|
|
3091
|
-
});
|
|
3092
|
-
await initCore({
|
|
3093
|
-
address: overview?.address || "",
|
|
3094
|
-
did: overview?.did || ""
|
|
3095
|
-
});
|
|
3096
|
-
});
|
|
3097
|
-
};
|
|
3098
|
-
const signMessage2 = async ({
|
|
3099
|
-
message,
|
|
3100
|
-
chainType = "ethereum" /* Ethereum */
|
|
3101
|
-
}) => {
|
|
3102
|
-
const getSign = async (resolve, reject) => {
|
|
3103
|
-
try {
|
|
3104
|
-
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
3105
|
-
method: "signMessage",
|
|
3106
|
-
data: {
|
|
3107
|
-
message,
|
|
3108
|
-
chainType
|
|
3109
|
-
}
|
|
3110
|
-
});
|
|
3111
|
-
resolve(recoverRes.message);
|
|
3112
|
-
} catch (error) {
|
|
3113
|
-
console.error("qwe-sign-error", error);
|
|
3114
|
-
reject(error);
|
|
3115
|
-
}
|
|
3116
|
-
};
|
|
3117
|
-
return await recoverAfter({
|
|
3118
|
-
handle: getSign,
|
|
3119
|
-
chainType
|
|
3120
|
-
});
|
|
3121
|
-
};
|
|
3122
|
-
const signTransaction = async ({
|
|
3123
|
-
transaction,
|
|
3124
|
-
chainType = "ethereum" /* Ethereum */,
|
|
3125
|
-
chain
|
|
3126
|
-
}) => {
|
|
3127
|
-
console.log("qwe-sign-transaction", transaction);
|
|
3128
|
-
const getSign = async (resolve, reject) => {
|
|
3129
|
-
try {
|
|
3130
|
-
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
3131
|
-
method: "signTransaction",
|
|
3132
|
-
data: {
|
|
3133
|
-
transaction,
|
|
3134
|
-
chainType,
|
|
3135
|
-
chain
|
|
3136
|
-
}
|
|
3137
|
-
});
|
|
3138
|
-
resolve(recoverRes.message);
|
|
3139
|
-
} catch (error) {
|
|
3140
|
-
console.error("qwe-sign-error", error);
|
|
3141
|
-
reject(error);
|
|
3142
|
-
}
|
|
3143
|
-
};
|
|
3144
|
-
return await recoverAfter({
|
|
3145
|
-
handle: getSign,
|
|
3146
|
-
chainType
|
|
3147
|
-
});
|
|
3148
|
-
};
|
|
3149
|
-
const evmAccount = useMemo12(() => {
|
|
3150
|
-
return address ? toAccount({
|
|
3151
|
-
address,
|
|
3152
|
-
async signMessage({ message }) {
|
|
3153
|
-
return await signMessage2({
|
|
3154
|
-
message,
|
|
3155
|
-
chainType: "ethereum" /* Ethereum */
|
|
3156
|
-
});
|
|
3157
|
-
},
|
|
3158
|
-
async signTransaction(transaction, options) {
|
|
3159
|
-
const { account, chain, ...restTransaction } = transaction;
|
|
3160
|
-
console.log("qwe-sign-transaction", restTransaction, options);
|
|
3161
|
-
return await signTransaction({
|
|
3162
|
-
transaction: {
|
|
3163
|
-
...restTransaction
|
|
3164
|
-
},
|
|
3165
|
-
chainType: "ethereum" /* Ethereum */,
|
|
3166
|
-
chain: {
|
|
3167
|
-
id: chain?.id || restTransaction.chainId,
|
|
3168
|
-
name: chain?.name,
|
|
3169
|
-
nativeCurrency: {
|
|
3170
|
-
name: chain?.nativeCurrency?.name || "ETH",
|
|
3171
|
-
symbol: chain?.nativeCurrency?.symbol || "ETH",
|
|
3172
|
-
decimals: chain?.nativeCurrency?.decimals || 18
|
|
3173
|
-
},
|
|
3174
|
-
rpcUrls: chain?.rpcUrls
|
|
3175
|
-
}
|
|
3176
|
-
});
|
|
3177
|
-
},
|
|
3178
|
-
async signTypedData(typedData) {
|
|
3179
|
-
return "0x";
|
|
3180
|
-
}
|
|
3181
|
-
}) : void 0;
|
|
3182
|
-
}, [address]);
|
|
3183
|
-
useEffect15(() => {
|
|
3184
|
-
matchlog_default.log("qwe-evmAccount", evmAccount);
|
|
3185
|
-
}, [evmAccount]);
|
|
3186
|
-
return {
|
|
3187
|
-
walletReady,
|
|
3188
|
-
evmAccount,
|
|
3189
|
-
address,
|
|
3190
|
-
initCore,
|
|
3191
|
-
signMessage: signMessage2,
|
|
3192
|
-
signTransaction,
|
|
3193
|
-
isRecovered,
|
|
3194
|
-
recoverAfter,
|
|
3195
|
-
generateEmbeddedWallets,
|
|
3196
|
-
recoveryEmbeddedWallets,
|
|
3197
|
-
createWalletClient: (parameters) => {
|
|
3198
|
-
if (!evmAccount) {
|
|
3199
|
-
return;
|
|
3200
|
-
}
|
|
3201
|
-
const obj = createWalletClient({
|
|
3202
|
-
...parameters,
|
|
3203
|
-
account: evmAccount
|
|
3204
|
-
});
|
|
3205
|
-
const sendTransaction = async (transaction) => {
|
|
3206
|
-
const getSign = async (resolve, reject) => {
|
|
3207
|
-
const { chain, ...restTransaction } = transaction;
|
|
3208
|
-
const chainId = chain ? chain.id : await obj.getChainId();
|
|
3209
|
-
const _chain = chain || obj.chain;
|
|
3210
|
-
const transactionId = Date.now().toString() + Math.random().toString().slice(6);
|
|
3211
|
-
window.matchProvider.transactionMessageIntervalMap[transactionId] = {
|
|
3212
|
-
transaction,
|
|
3213
|
-
func: async () => {
|
|
3214
|
-
try {
|
|
3215
|
-
const {
|
|
3216
|
-
chain: chain2,
|
|
3217
|
-
account,
|
|
3218
|
-
...prepareTransactionRequest
|
|
3219
|
-
// @ts-ignore
|
|
3220
|
-
} = await obj.prepareTransactionRequest(window.matchProvider.transactionMessageIntervalMap[transactionId].transaction);
|
|
3221
|
-
window.matchProvider.sendWalletMessage({
|
|
3222
|
-
method: "prepareTransactionRequest",
|
|
3223
|
-
data: {
|
|
3224
|
-
prepareTransactionRequest,
|
|
3225
|
-
transactionId
|
|
3226
|
-
}
|
|
3227
|
-
});
|
|
3228
|
-
} catch (error) {
|
|
3229
|
-
console.error(error);
|
|
3230
|
-
}
|
|
3231
|
-
},
|
|
3232
|
-
interval: setInterval(() => {
|
|
3233
|
-
window.matchProvider.transactionMessageIntervalMap[transactionId].func();
|
|
3234
|
-
}, 1e4)
|
|
3235
|
-
};
|
|
3236
|
-
try {
|
|
3237
|
-
const {
|
|
3238
|
-
chain: chain2,
|
|
3239
|
-
account,
|
|
3240
|
-
...prepareTransactionRequest
|
|
3241
|
-
// @ts-ignore
|
|
3242
|
-
} = await obj.prepareTransactionRequest(transaction);
|
|
3243
|
-
const { serializedTransaction } = await window.matchProvider.waitUntilWalletMessage({
|
|
3244
|
-
method: "sendTransaction",
|
|
3245
|
-
data: {
|
|
3246
|
-
transactionId,
|
|
3247
|
-
transaction: {
|
|
3248
|
-
...restTransaction
|
|
3249
|
-
},
|
|
3250
|
-
chainType: "ethereum" /* Ethereum */,
|
|
3251
|
-
chain: {
|
|
3252
|
-
id: chainId,
|
|
3253
|
-
name: _chain?.name,
|
|
3254
|
-
nativeCurrency: _chain?.nativeCurrency,
|
|
3255
|
-
rpcUrls: _chain?.rpcUrls
|
|
3256
|
-
},
|
|
3257
|
-
prepareTransactionRequest
|
|
3258
|
-
}
|
|
3259
|
-
});
|
|
3260
|
-
openHashPanel();
|
|
3261
|
-
const txHash = await obj.sendRawTransaction({
|
|
3262
|
-
serializedTransaction
|
|
3263
|
-
});
|
|
3264
|
-
openHashPanel({
|
|
3265
|
-
hash: txHash,
|
|
3266
|
-
chain: _chain
|
|
3267
|
-
});
|
|
3268
|
-
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
3269
|
-
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
3270
|
-
resolve(txHash);
|
|
3271
|
-
} catch (error) {
|
|
3272
|
-
console.error("qwe-sign-error", error);
|
|
3273
|
-
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
3274
|
-
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
3275
|
-
reject(error);
|
|
3276
|
-
}
|
|
3277
|
-
};
|
|
3278
|
-
return await recoverAfter({
|
|
3279
|
-
handle: getSign,
|
|
3280
|
-
chainType: "ethereum" /* Ethereum */
|
|
3281
|
-
});
|
|
3282
|
-
};
|
|
3283
|
-
const deployContract = async (parameters2) => {
|
|
3284
|
-
const { abi, args, bytecode, ...request3 } = parameters2;
|
|
3285
|
-
const calldata = encodeDeployData({ abi, args, bytecode });
|
|
3286
|
-
return await sendTransaction({
|
|
3287
|
-
...request3,
|
|
3288
|
-
data: calldata
|
|
3289
|
-
});
|
|
3290
|
-
};
|
|
3291
|
-
const writeContract = async (parameters2) => {
|
|
3292
|
-
const { abi, address: address2, args, dataSuffix, functionName, ...request3 } = parameters2;
|
|
3293
|
-
const data = encodeFunctionData({
|
|
3294
|
-
abi,
|
|
3295
|
-
args,
|
|
3296
|
-
functionName
|
|
3297
|
-
});
|
|
3298
|
-
return await sendTransaction({
|
|
3299
|
-
data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
|
|
3300
|
-
to: address2,
|
|
3301
|
-
...request3
|
|
3302
|
-
});
|
|
3303
|
-
};
|
|
3304
|
-
return {
|
|
3305
|
-
...obj,
|
|
3306
|
-
sendTransaction,
|
|
3307
|
-
deployContract,
|
|
3308
|
-
writeContract
|
|
3309
|
-
};
|
|
3310
|
-
}
|
|
3311
|
-
};
|
|
3312
|
-
}
|
|
2760
|
+
import { useEffect as useEffect12, useRef as useRef2 } from "react";
|
|
3313
2761
|
|
|
3314
2762
|
// src/utils/wallet.ts
|
|
3315
2763
|
var sendMessage = ({ method, data, resolve, reject, timeout }) => {
|
|
@@ -3332,22 +2780,29 @@ var sendMessage = ({ method, data, resolve, reject, timeout }) => {
|
|
|
3332
2780
|
}, timeout);
|
|
3333
2781
|
};
|
|
3334
2782
|
|
|
2783
|
+
// src/store/useStore.ts
|
|
2784
|
+
import { create as create3 } from "zustand";
|
|
2785
|
+
var useStore = create3((set) => ({
|
|
2786
|
+
walletReady: false,
|
|
2787
|
+
setWalletReady: (inited) => set({ walletReady: inited })
|
|
2788
|
+
}));
|
|
2789
|
+
var useStore_default = useStore;
|
|
2790
|
+
|
|
3335
2791
|
// src/hooks/useWalletInit.ts
|
|
3336
2792
|
var getWalletIframe = () => {
|
|
3337
2793
|
return document.getElementById("match-wallet");
|
|
3338
2794
|
};
|
|
3339
|
-
var
|
|
2795
|
+
var AppClientId = getAppClientId();
|
|
3340
2796
|
function useWalletInit({
|
|
3341
2797
|
config
|
|
3342
2798
|
}) {
|
|
3343
|
-
const { endpoints, token, overview, setWallet, wallet } = useLocalStore_default();
|
|
3344
|
-
const { initCore } = useWallet();
|
|
2799
|
+
const { endpoints, token, overview, setWallet, wallet, appid, locale, refreshOverview } = useLocalStore_default();
|
|
3345
2800
|
const { setWalletReady, walletReady } = useStore_default();
|
|
3346
2801
|
const iframeReadyRef = useRef2(walletReady);
|
|
3347
|
-
|
|
2802
|
+
useEffect12(() => {
|
|
3348
2803
|
setWallet(config);
|
|
3349
2804
|
}, [config]);
|
|
3350
|
-
|
|
2805
|
+
useEffect12(() => {
|
|
3351
2806
|
matchlog_default.log("sdk.mpc.status", walletReady, iframeReadyRef.current);
|
|
3352
2807
|
iframeReadyRef.current = walletReady;
|
|
3353
2808
|
if (iframeReadyRef.current) {
|
|
@@ -3364,14 +2819,31 @@ function useWalletInit({
|
|
|
3364
2819
|
onReady();
|
|
3365
2820
|
}
|
|
3366
2821
|
}, [walletReady]);
|
|
3367
|
-
|
|
2822
|
+
useEffect12(() => {
|
|
2823
|
+
if (!endpoints.auth || !appid || !token || !config) {
|
|
2824
|
+
const existingIframe = getWalletIframe();
|
|
2825
|
+
if (existingIframe) {
|
|
2826
|
+
existingIframe.remove();
|
|
2827
|
+
}
|
|
2828
|
+
return;
|
|
2829
|
+
}
|
|
3368
2830
|
if (endpoints.auth) {
|
|
3369
2831
|
const existingIframe = getWalletIframe();
|
|
2832
|
+
const query = {
|
|
2833
|
+
appid,
|
|
2834
|
+
locale,
|
|
2835
|
+
appClientId: AppClientId,
|
|
2836
|
+
initParams: encodeBase64(JSON.stringify({
|
|
2837
|
+
access_token: token,
|
|
2838
|
+
type: config.type
|
|
2839
|
+
}))
|
|
2840
|
+
};
|
|
2841
|
+
const url = endpoints.auth + "wallet/2?" + new URLSearchParams(query).toString();
|
|
3370
2842
|
if (!existingIframe) {
|
|
3371
2843
|
const createIframe = () => {
|
|
3372
2844
|
const iframe = document.createElement("iframe");
|
|
3373
2845
|
iframe.id = "match-wallet";
|
|
3374
|
-
iframe.src =
|
|
2846
|
+
iframe.src = url;
|
|
3375
2847
|
iframe.style.display = "none";
|
|
3376
2848
|
iframe.style.width = "0";
|
|
3377
2849
|
iframe.style.height = "0";
|
|
@@ -3440,14 +2912,14 @@ function useWalletInit({
|
|
|
3440
2912
|
};
|
|
3441
2913
|
}
|
|
3442
2914
|
} else {
|
|
3443
|
-
if (existingIframe.src !==
|
|
2915
|
+
if (existingIframe.src !== url) {
|
|
3444
2916
|
setWalletReady(false);
|
|
3445
|
-
existingIframe.src =
|
|
2917
|
+
existingIframe.src = url;
|
|
3446
2918
|
}
|
|
3447
2919
|
}
|
|
3448
2920
|
}
|
|
3449
|
-
}, [endpoints.auth]);
|
|
3450
|
-
|
|
2921
|
+
}, [endpoints.auth, appid, token, config]);
|
|
2922
|
+
useEffect12(() => {
|
|
3451
2923
|
const messageHandle = async (e) => {
|
|
3452
2924
|
if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
|
|
3453
2925
|
return;
|
|
@@ -3488,6 +2960,10 @@ function useWalletInit({
|
|
|
3488
2960
|
}
|
|
3489
2961
|
return;
|
|
3490
2962
|
}
|
|
2963
|
+
if (messageId == "refreshOverview") {
|
|
2964
|
+
refreshOverview();
|
|
2965
|
+
return;
|
|
2966
|
+
}
|
|
3491
2967
|
if (messageId == "updateTransactionData") {
|
|
3492
2968
|
const { data, rootData, transactionId } = res.data;
|
|
3493
2969
|
if (window.matchProvider.transactionMessageIntervalMap[transactionId] && window.matchProvider.transactionMessageIntervalMap[transactionId].transaction.data == rootData) {
|
|
@@ -3518,21 +2994,13 @@ function useWalletInit({
|
|
|
3518
2994
|
window.removeEventListener("message", messageHandle);
|
|
3519
2995
|
};
|
|
3520
2996
|
}, []);
|
|
3521
|
-
useEffect16(() => {
|
|
3522
|
-
if (token && overview && overview.did && walletReady) {
|
|
3523
|
-
initCore({
|
|
3524
|
-
address: overview.address || "",
|
|
3525
|
-
did: overview.did
|
|
3526
|
-
});
|
|
3527
|
-
}
|
|
3528
|
-
}, [overview, token, walletReady]);
|
|
3529
2997
|
return {
|
|
3530
2998
|
walletReady
|
|
3531
2999
|
};
|
|
3532
3000
|
}
|
|
3533
3001
|
|
|
3534
3002
|
// src/hooks/useInit.tsx
|
|
3535
|
-
import { useEffect as
|
|
3003
|
+
import { useEffect as useEffect13, useRef as useRef3 } from "react";
|
|
3536
3004
|
function useInit({
|
|
3537
3005
|
theme,
|
|
3538
3006
|
appid,
|
|
@@ -3556,19 +3024,19 @@ function useInit({
|
|
|
3556
3024
|
const searchParams = new URLSearchParams(window.location.search);
|
|
3557
3025
|
const matchToken = searchParams.get("matchToken");
|
|
3558
3026
|
const realEndpoints = endpoints || env_default.endpoints;
|
|
3559
|
-
|
|
3027
|
+
useEffect13(() => {
|
|
3560
3028
|
setTheme(theme);
|
|
3561
3029
|
}, [theme]);
|
|
3562
|
-
|
|
3030
|
+
useEffect13(() => {
|
|
3563
3031
|
setAppid(appid);
|
|
3564
3032
|
}, [appid]);
|
|
3565
|
-
|
|
3033
|
+
useEffect13(() => {
|
|
3566
3034
|
setEndpoints(realEndpoints);
|
|
3567
3035
|
}, [realEndpoints]);
|
|
3568
|
-
|
|
3036
|
+
useEffect13(() => {
|
|
3569
3037
|
setLocale(locale || "en");
|
|
3570
3038
|
}, [locale]);
|
|
3571
|
-
|
|
3039
|
+
useEffect13(() => {
|
|
3572
3040
|
if (matchToken) {
|
|
3573
3041
|
const tokenData = JSON.parse(atob(matchToken));
|
|
3574
3042
|
if (tokenData && tokenData.mid && tokenData.token) {
|
|
@@ -3579,7 +3047,7 @@ function useInit({
|
|
|
3579
3047
|
}
|
|
3580
3048
|
}
|
|
3581
3049
|
}, [matchToken]);
|
|
3582
|
-
|
|
3050
|
+
useEffect13(() => {
|
|
3583
3051
|
const onLoginMessage = (event) => {
|
|
3584
3052
|
const res = event.data;
|
|
3585
3053
|
if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
|
|
@@ -3616,7 +3084,7 @@ function useInit({
|
|
|
3616
3084
|
overviewLoadingRef.current = false;
|
|
3617
3085
|
}
|
|
3618
3086
|
};
|
|
3619
|
-
|
|
3087
|
+
useEffect13(() => {
|
|
3620
3088
|
if (token) {
|
|
3621
3089
|
loadOverview();
|
|
3622
3090
|
}
|
|
@@ -4132,7 +3600,7 @@ var messages = {
|
|
|
4132
3600
|
};
|
|
4133
3601
|
|
|
4134
3602
|
// src/MatchContext.tsx
|
|
4135
|
-
import { jsx as
|
|
3603
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
4136
3604
|
var queryClient = new QueryClient();
|
|
4137
3605
|
var MatchContext = createContext(void 0);
|
|
4138
3606
|
var MatchProvider = ({
|
|
@@ -4154,7 +3622,7 @@ var MatchProvider = ({
|
|
|
4154
3622
|
useWalletInit({
|
|
4155
3623
|
config: wallet
|
|
4156
3624
|
});
|
|
4157
|
-
return /* @__PURE__ */
|
|
3625
|
+
return /* @__PURE__ */ jsx22(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx22(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx22(
|
|
4158
3626
|
MatchContext.Provider,
|
|
4159
3627
|
{
|
|
4160
3628
|
value: {
|
|
@@ -4165,7 +3633,7 @@ var MatchProvider = ({
|
|
|
4165
3633
|
theme,
|
|
4166
3634
|
locale: realLocale
|
|
4167
3635
|
},
|
|
4168
|
-
children: /* @__PURE__ */
|
|
3636
|
+
children: /* @__PURE__ */ jsx22(context_default, { children })
|
|
4169
3637
|
}
|
|
4170
3638
|
) }) });
|
|
4171
3639
|
};
|
|
@@ -4189,7 +3657,8 @@ function useUserInfo() {
|
|
|
4189
3657
|
overview,
|
|
4190
3658
|
address,
|
|
4191
3659
|
endpoints,
|
|
4192
|
-
locale
|
|
3660
|
+
locale,
|
|
3661
|
+
refreshOverview
|
|
4193
3662
|
} = useLocalStore_default();
|
|
4194
3663
|
const { events, login } = useMatch();
|
|
4195
3664
|
const { open: SOLOpen } = useSOLModalStore();
|
|
@@ -4198,7 +3667,7 @@ function useUserInfo() {
|
|
|
4198
3667
|
const { open: BTCOpen } = useBTCModalStore();
|
|
4199
3668
|
const { open: CEXBindOpen } = useCEXBindModalStore();
|
|
4200
3669
|
const walletModalStore = useWalletModalStore();
|
|
4201
|
-
const isLogin =
|
|
3670
|
+
const isLogin = useMemo10(() => !!token && !!overview, [token, overview]);
|
|
4202
3671
|
const logout = async () => {
|
|
4203
3672
|
try {
|
|
4204
3673
|
await toLogoutApi();
|
|
@@ -4298,12 +3767,6 @@ function useUserInfo() {
|
|
|
4298
3767
|
}
|
|
4299
3768
|
return false;
|
|
4300
3769
|
};
|
|
4301
|
-
const refreshOverview = async () => {
|
|
4302
|
-
const res = await getOverviewInfoApi();
|
|
4303
|
-
if (res.data) {
|
|
4304
|
-
setOverview(res.data);
|
|
4305
|
-
}
|
|
4306
|
-
};
|
|
4307
3770
|
const bindWallet = async () => {
|
|
4308
3771
|
if (!token) {
|
|
4309
3772
|
throw new Error("You must login first");
|
|
@@ -4436,9 +3899,9 @@ function useUserInfo() {
|
|
|
4436
3899
|
}
|
|
4437
3900
|
|
|
4438
3901
|
// src/hooks/useMatchEvents.ts
|
|
4439
|
-
import { useEffect as
|
|
3902
|
+
import { useEffect as useEffect15 } from "react";
|
|
4440
3903
|
function useMatchEvents(handlers) {
|
|
4441
|
-
|
|
3904
|
+
useEffect15(() => {
|
|
4442
3905
|
Object.entries(handlers).forEach(([event, handler]) => {
|
|
4443
3906
|
if (handler) {
|
|
4444
3907
|
eventManager_default.on(event, handler);
|
|
@@ -4454,16 +3917,228 @@ function useMatchEvents(handlers) {
|
|
|
4454
3917
|
}, [handlers]);
|
|
4455
3918
|
}
|
|
4456
3919
|
|
|
3920
|
+
// src/hooks/useWallet.tsx
|
|
3921
|
+
import {
|
|
3922
|
+
encodeFunctionData
|
|
3923
|
+
} from "viem";
|
|
3924
|
+
import { toAccount } from "viem/accounts";
|
|
3925
|
+
import { createWalletClient } from "viem";
|
|
3926
|
+
import { useEffect as useEffect16, useMemo as useMemo11 } from "react";
|
|
3927
|
+
import { encodeDeployData } from "viem";
|
|
3928
|
+
var AppClientId2 = "react-sdk-" + getVersion();
|
|
3929
|
+
function useWallet2() {
|
|
3930
|
+
const { address, wallet: walletConfig } = useLocalStore_default();
|
|
3931
|
+
const { walletReady } = useStore_default();
|
|
3932
|
+
const { open: openHashPanel } = useHashPanelStore();
|
|
3933
|
+
const isRecovered = async () => {
|
|
3934
|
+
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
3935
|
+
method: "isRecovered"
|
|
3936
|
+
});
|
|
3937
|
+
return res.isRecovered;
|
|
3938
|
+
};
|
|
3939
|
+
const signMessage2 = async ({
|
|
3940
|
+
message,
|
|
3941
|
+
chainType = "ethereum" /* Ethereum */
|
|
3942
|
+
}) => {
|
|
3943
|
+
try {
|
|
3944
|
+
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
3945
|
+
method: "signMessage",
|
|
3946
|
+
data: {
|
|
3947
|
+
message,
|
|
3948
|
+
chainType
|
|
3949
|
+
}
|
|
3950
|
+
});
|
|
3951
|
+
return res.message;
|
|
3952
|
+
} catch (error) {
|
|
3953
|
+
console.error("sdk.wallet.message", error);
|
|
3954
|
+
throw error;
|
|
3955
|
+
}
|
|
3956
|
+
};
|
|
3957
|
+
const signTransaction = async ({
|
|
3958
|
+
transaction,
|
|
3959
|
+
chainType = "ethereum" /* Ethereum */,
|
|
3960
|
+
chain
|
|
3961
|
+
}) => {
|
|
3962
|
+
try {
|
|
3963
|
+
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
3964
|
+
method: "signTransaction",
|
|
3965
|
+
data: {
|
|
3966
|
+
transaction,
|
|
3967
|
+
chainType,
|
|
3968
|
+
chain
|
|
3969
|
+
}
|
|
3970
|
+
});
|
|
3971
|
+
return res.message;
|
|
3972
|
+
} catch (error) {
|
|
3973
|
+
console.error("sdk.wallet.transaction", error);
|
|
3974
|
+
throw error;
|
|
3975
|
+
}
|
|
3976
|
+
};
|
|
3977
|
+
const evmAccount = useMemo11(() => {
|
|
3978
|
+
return address ? toAccount({
|
|
3979
|
+
address,
|
|
3980
|
+
async signMessage({ message }) {
|
|
3981
|
+
return await signMessage2({
|
|
3982
|
+
message,
|
|
3983
|
+
chainType: "ethereum" /* Ethereum */
|
|
3984
|
+
});
|
|
3985
|
+
},
|
|
3986
|
+
async signTransaction(transaction, options) {
|
|
3987
|
+
const { account, chain, ...restTransaction } = transaction;
|
|
3988
|
+
console.log("qwe-sign-transaction", restTransaction, options);
|
|
3989
|
+
return await signTransaction({
|
|
3990
|
+
transaction: {
|
|
3991
|
+
...restTransaction
|
|
3992
|
+
},
|
|
3993
|
+
chainType: "ethereum" /* Ethereum */,
|
|
3994
|
+
chain: {
|
|
3995
|
+
id: chain?.id || restTransaction.chainId,
|
|
3996
|
+
name: chain?.name,
|
|
3997
|
+
nativeCurrency: {
|
|
3998
|
+
name: chain?.nativeCurrency?.name || "ETH",
|
|
3999
|
+
symbol: chain?.nativeCurrency?.symbol || "ETH",
|
|
4000
|
+
decimals: chain?.nativeCurrency?.decimals || 18
|
|
4001
|
+
},
|
|
4002
|
+
rpcUrls: chain?.rpcUrls
|
|
4003
|
+
}
|
|
4004
|
+
});
|
|
4005
|
+
},
|
|
4006
|
+
async signTypedData(typedData) {
|
|
4007
|
+
return "0x";
|
|
4008
|
+
}
|
|
4009
|
+
}) : void 0;
|
|
4010
|
+
}, [address]);
|
|
4011
|
+
useEffect16(() => {
|
|
4012
|
+
matchlog_default.log("qwe-evmAccount", evmAccount);
|
|
4013
|
+
}, [evmAccount]);
|
|
4014
|
+
return {
|
|
4015
|
+
walletReady,
|
|
4016
|
+
evmAccount,
|
|
4017
|
+
address,
|
|
4018
|
+
signMessage: signMessage2,
|
|
4019
|
+
signTransaction,
|
|
4020
|
+
isRecovered,
|
|
4021
|
+
createWalletClient: (parameters) => {
|
|
4022
|
+
if (!evmAccount) {
|
|
4023
|
+
return;
|
|
4024
|
+
}
|
|
4025
|
+
const obj = createWalletClient({
|
|
4026
|
+
...parameters,
|
|
4027
|
+
account: evmAccount
|
|
4028
|
+
});
|
|
4029
|
+
const sendTransaction = async (transaction) => {
|
|
4030
|
+
const { chain, ...restTransaction } = transaction;
|
|
4031
|
+
const chainId = chain ? chain.id : await obj.getChainId();
|
|
4032
|
+
const _chain = chain || obj.chain;
|
|
4033
|
+
const transactionId = Date.now().toString() + Math.random().toString().slice(6);
|
|
4034
|
+
window.matchProvider.transactionMessageIntervalMap[transactionId] = {
|
|
4035
|
+
transaction,
|
|
4036
|
+
func: async () => {
|
|
4037
|
+
try {
|
|
4038
|
+
const {
|
|
4039
|
+
chain: chain2,
|
|
4040
|
+
account,
|
|
4041
|
+
...prepareTransactionRequest
|
|
4042
|
+
// @ts-ignore
|
|
4043
|
+
} = await obj.prepareTransactionRequest(window.matchProvider.transactionMessageIntervalMap[transactionId].transaction);
|
|
4044
|
+
window.matchProvider.sendWalletMessage({
|
|
4045
|
+
method: "prepareTransactionRequest",
|
|
4046
|
+
data: {
|
|
4047
|
+
prepareTransactionRequest,
|
|
4048
|
+
transactionId
|
|
4049
|
+
}
|
|
4050
|
+
});
|
|
4051
|
+
} catch (error) {
|
|
4052
|
+
console.error(error);
|
|
4053
|
+
}
|
|
4054
|
+
},
|
|
4055
|
+
interval: setInterval(() => {
|
|
4056
|
+
window.matchProvider.transactionMessageIntervalMap[transactionId].func();
|
|
4057
|
+
}, 1e4)
|
|
4058
|
+
};
|
|
4059
|
+
try {
|
|
4060
|
+
const {
|
|
4061
|
+
chain: chain2,
|
|
4062
|
+
account,
|
|
4063
|
+
...prepareTransactionRequest
|
|
4064
|
+
// @ts-ignore
|
|
4065
|
+
} = await obj.prepareTransactionRequest(transaction);
|
|
4066
|
+
const { serializedTransaction } = await window.matchProvider.waitUntilWalletMessage({
|
|
4067
|
+
method: "sendTransaction",
|
|
4068
|
+
data: {
|
|
4069
|
+
transactionId,
|
|
4070
|
+
transaction: {
|
|
4071
|
+
...restTransaction
|
|
4072
|
+
},
|
|
4073
|
+
chainType: "ethereum" /* Ethereum */,
|
|
4074
|
+
chain: {
|
|
4075
|
+
id: chainId,
|
|
4076
|
+
name: _chain?.name,
|
|
4077
|
+
nativeCurrency: _chain?.nativeCurrency,
|
|
4078
|
+
rpcUrls: _chain?.rpcUrls
|
|
4079
|
+
},
|
|
4080
|
+
prepareTransactionRequest
|
|
4081
|
+
}
|
|
4082
|
+
});
|
|
4083
|
+
openHashPanel();
|
|
4084
|
+
const txHash = await obj.sendRawTransaction({
|
|
4085
|
+
serializedTransaction
|
|
4086
|
+
});
|
|
4087
|
+
openHashPanel({
|
|
4088
|
+
hash: txHash,
|
|
4089
|
+
chain: _chain
|
|
4090
|
+
});
|
|
4091
|
+
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
4092
|
+
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
4093
|
+
return txHash;
|
|
4094
|
+
} catch (error) {
|
|
4095
|
+
console.error("qwe-sign-error", error);
|
|
4096
|
+
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
4097
|
+
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
4098
|
+
throw error;
|
|
4099
|
+
}
|
|
4100
|
+
};
|
|
4101
|
+
const deployContract = async (parameters2) => {
|
|
4102
|
+
const { abi, args, bytecode, ...request3 } = parameters2;
|
|
4103
|
+
const calldata = encodeDeployData({ abi, args, bytecode });
|
|
4104
|
+
return await sendTransaction({
|
|
4105
|
+
...request3,
|
|
4106
|
+
data: calldata
|
|
4107
|
+
});
|
|
4108
|
+
};
|
|
4109
|
+
const writeContract = async (parameters2) => {
|
|
4110
|
+
const { abi, address: address2, args, dataSuffix, functionName, ...request3 } = parameters2;
|
|
4111
|
+
const data = encodeFunctionData({
|
|
4112
|
+
abi,
|
|
4113
|
+
args,
|
|
4114
|
+
functionName
|
|
4115
|
+
});
|
|
4116
|
+
return await sendTransaction({
|
|
4117
|
+
data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
|
|
4118
|
+
to: address2,
|
|
4119
|
+
...request3
|
|
4120
|
+
});
|
|
4121
|
+
};
|
|
4122
|
+
return {
|
|
4123
|
+
...obj,
|
|
4124
|
+
sendTransaction,
|
|
4125
|
+
deployContract,
|
|
4126
|
+
writeContract
|
|
4127
|
+
};
|
|
4128
|
+
}
|
|
4129
|
+
};
|
|
4130
|
+
}
|
|
4131
|
+
|
|
4457
4132
|
// src/hooks/useCopyClipboard.ts
|
|
4458
4133
|
import copy from "copy-to-clipboard";
|
|
4459
|
-
import { useCallback, useEffect as
|
|
4134
|
+
import { useCallback, useEffect as useEffect17, useState as useState17 } from "react";
|
|
4460
4135
|
function useCopyClipboard(timeout = 500) {
|
|
4461
|
-
const [isCopied, setIsCopied] =
|
|
4136
|
+
const [isCopied, setIsCopied] = useState17(false);
|
|
4462
4137
|
const staticCopy = useCallback((text) => {
|
|
4463
4138
|
const didCopy = copy(text);
|
|
4464
4139
|
setIsCopied(didCopy);
|
|
4465
4140
|
}, []);
|
|
4466
|
-
|
|
4141
|
+
useEffect17(() => {
|
|
4467
4142
|
if (isCopied) {
|
|
4468
4143
|
const hide = setTimeout(() => {
|
|
4469
4144
|
setIsCopied(false);
|
|
@@ -4489,10 +4164,9 @@ export {
|
|
|
4489
4164
|
mintPassportNftApi,
|
|
4490
4165
|
useUserInfo,
|
|
4491
4166
|
useMatchEvents,
|
|
4492
|
-
useWallet,
|
|
4167
|
+
useWallet2 as useWallet,
|
|
4493
4168
|
useCopyClipboard,
|
|
4494
4169
|
hooks_exports,
|
|
4495
|
-
PasswordModal,
|
|
4496
4170
|
EmailModal,
|
|
4497
4171
|
LoginBox,
|
|
4498
4172
|
LoginPanel,
|
|
@@ -4508,4 +4182,4 @@ export {
|
|
|
4508
4182
|
MatchProvider,
|
|
4509
4183
|
useMatch
|
|
4510
4184
|
};
|
|
4511
|
-
//# sourceMappingURL=chunk-
|
|
4185
|
+
//# sourceMappingURL=chunk-V35GNYR2.mjs.map
|