@arcblock/did-connect-react 3.5.2 → 4.0.0-beta.1
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/ConnectContext.d.ts +13 -0
- package/dist/ConnectContext.d.ts.map +1 -0
- package/dist/ConnectContext.js +14 -0
- package/dist/ConnectContext.js.map +1 -0
- package/dist/ConnectProvider.d.ts +11 -0
- package/dist/ConnectProvider.d.ts.map +1 -0
- package/dist/ConnectProvider.js +23 -0
- package/dist/ConnectProvider.js.map +1 -0
- package/dist/compat/SessionProvider.d.ts +22 -0
- package/dist/compat/SessionProvider.d.ts.map +1 -0
- package/dist/compat/SessionProvider.js +17 -0
- package/dist/compat/SessionProvider.js.map +1 -0
- package/dist/compat/index.d.ts +4 -0
- package/dist/compat/index.d.ts.map +1 -0
- package/dist/compat/index.js +3 -0
- package/dist/compat/index.js.map +1 -0
- package/dist/compat/useSessionContext.d.ts +14 -0
- package/dist/compat/useSessionContext.d.ts.map +1 -0
- package/dist/compat/useSessionContext.js +20 -0
- package/dist/compat/useSessionContext.js.map +1 -0
- package/dist/components/LoginPage.d.ts +15 -0
- package/dist/components/LoginPage.d.ts.map +1 -0
- package/dist/components/LoginPage.js +33 -0
- package/dist/components/LoginPage.js.map +1 -0
- package/dist/components/UserAvatar.d.ts +19 -0
- package/dist/components/UserAvatar.d.ts.map +1 -0
- package/dist/components/UserAvatar.js +45 -0
- package/dist/components/UserAvatar.js.map +1 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useConnect.d.ts +15 -0
- package/dist/hooks/useConnect.d.ts.map +1 -0
- package/dist/hooks/useConnect.js +19 -0
- package/dist/hooks/useConnect.js.map +1 -0
- package/dist/hooks/useEmail.d.ts +11 -0
- package/dist/hooks/useEmail.d.ts.map +1 -0
- package/dist/hooks/useEmail.js +47 -0
- package/dist/hooks/useEmail.js.map +1 -0
- package/dist/hooks/useOAuth.d.ts +12 -0
- package/dist/hooks/useOAuth.d.ts.map +1 -0
- package/dist/hooks/useOAuth.js +75 -0
- package/dist/hooks/useOAuth.js.map +1 -0
- package/dist/hooks/usePasskey.d.ts +14 -0
- package/dist/hooks/usePasskey.d.ts.map +1 -0
- package/dist/hooks/usePasskey.js +35 -0
- package/dist/hooks/usePasskey.js.map +1 -0
- package/dist/hooks/useSession.d.ts +12 -0
- package/dist/hooks/useSession.d.ts.map +1 -0
- package/dist/hooks/useSession.js +30 -0
- package/dist/hooks/useSession.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/internals/blocklet-config.d.ts +22 -0
- package/dist/internals/blocklet-config.d.ts.map +1 -0
- package/dist/internals/blocklet-config.js +26 -0
- package/dist/internals/blocklet-config.js.map +1 -0
- package/dist/internals/local-storage-adapter.d.ts +12 -0
- package/dist/internals/local-storage-adapter.d.ts.map +1 -0
- package/dist/internals/local-storage-adapter.js +32 -0
- package/dist/internals/local-storage-adapter.js.map +1 -0
- package/dist/internals/use-sync-state.d.ts +18 -0
- package/dist/internals/use-sync-state.d.ts.map +1 -0
- package/dist/internals/use-sync-state.js +38 -0
- package/dist/internals/use-sync-state.js.map +1 -0
- package/package.json +33 -79
- package/LICENSE +0 -13
- package/README.md +0 -134
- package/dist/standalone/did-connect-react.css +0 -1
- package/dist/standalone/index.js +0 -136774
- package/lib/Address/index.js +0 -4
- package/lib/Avatar/index.js +0 -4
- package/lib/Button/index.js +0 -17
- package/lib/Connect/assets/locale.js +0 -147
- package/lib/Connect/assets/login-bg.png +0 -0
- package/lib/Connect/assets/login-slogan.js +0 -9
- package/lib/Connect/components/action-button.js +0 -26
- package/lib/Connect/components/app-tips.js +0 -132
- package/lib/Connect/components/auto-height.js +0 -31
- package/lib/Connect/components/back-button.js +0 -25
- package/lib/Connect/components/connect-status.js +0 -263
- package/lib/Connect/components/did-connect-title.js +0 -127
- package/lib/Connect/components/download-tips.js +0 -52
- package/lib/Connect/components/loading.js +0 -26
- package/lib/Connect/components/login-item/connect-choose-list.js +0 -257
- package/lib/Connect/components/login-item/connect-provider-list.js +0 -345
- package/lib/Connect/components/login-item/login-method-item.js +0 -147
- package/lib/Connect/components/login-item/mobile-login-item.js +0 -116
- package/lib/Connect/components/login-item/passkey-login-item.js +0 -44
- package/lib/Connect/components/login-item/wallet-login-options.js +0 -114
- package/lib/Connect/components/login-item/web-login-item.js +0 -104
- package/lib/Connect/components/mask-overlay.js +0 -34
- package/lib/Connect/components/refresh-overlay.js +0 -57
- package/lib/Connect/components/switch-app.js +0 -70
- package/lib/Connect/connect.js +0 -505
- package/lib/Connect/contexts/state.js +0 -156
- package/lib/Connect/fallback-connect.js +0 -53
- package/lib/Connect/fullpage.js +0 -5
- package/lib/Connect/hooks/auth-url.js +0 -23
- package/lib/Connect/hooks/method-list.js +0 -46
- package/lib/Connect/hooks/page-show.js +0 -17
- package/lib/Connect/hooks/provider-list.js +0 -69
- package/lib/Connect/hooks/security.js +0 -27
- package/lib/Connect/hooks/token.js +0 -296
- package/lib/Connect/hooks/use-apps.js +0 -19
- package/lib/Connect/hooks/use-quick-connect.js +0 -86
- package/lib/Connect/index.js +0 -16
- package/lib/Connect/landing-page.js +0 -5
- package/lib/Connect/plugins/email/index.js +0 -65
- package/lib/Connect/plugins/email/list-item.js +0 -31
- package/lib/Connect/plugins/email/placeholder.js +0 -284
- package/lib/Connect/plugins/index.js +0 -4
- package/lib/Connect/use-connect.js +0 -164
- package/lib/Connect/with-blocklet.js +0 -15
- package/lib/Connect/with-bridge-call.js +0 -108
- package/lib/Federated/context.js +0 -61
- package/lib/Federated/index.js +0 -7
- package/lib/Logo/index.js +0 -4
- package/lib/OAuth/bind-conflict-alert.js +0 -29
- package/lib/OAuth/context.js +0 -277
- package/lib/OAuth/guest.svg.js +0 -5
- package/lib/OAuth/index.js +0 -7
- package/lib/OAuth/passport-switcher.js +0 -5
- package/lib/Passkey/actions.js +0 -170
- package/lib/Passkey/constants.js +0 -4
- package/lib/Passkey/context.js +0 -281
- package/lib/Passkey/dialog.js +0 -280
- package/lib/Passkey/icon.js +0 -13
- package/lib/Passkey/index.js +0 -9
- package/lib/Service/index.js +0 -62
- package/lib/Session/assets/did-spaces-guide-cover.svg.js +0 -111
- package/lib/Session/assets/did-spaces-guide-icon.svg.js +0 -9
- package/lib/Session/context.js +0 -5
- package/lib/Session/did-spaces-guide.js +0 -136
- package/lib/Session/handler.js +0 -55
- package/lib/Session/hooks/use-federated.js +0 -64
- package/lib/Session/hooks/use-mobile.js +0 -8
- package/lib/Session/hooks/use-protected-routes.js +0 -11
- package/lib/Session/hooks/use-session-token.js +0 -181
- package/lib/Session/hooks/use-verify.js +0 -45
- package/lib/Session/index.js +0 -941
- package/lib/Session/libs/constants.js +0 -18
- package/lib/Session/libs/did-spaces.js +0 -10
- package/lib/Session/libs/federated.js +0 -42
- package/lib/Session/libs/index.js +0 -15
- package/lib/Session/libs/locales.js +0 -161
- package/lib/Session/libs/login-mobile.js +0 -55
- package/lib/Session/window-focus-aware.js +0 -17
- package/lib/SessionManager/index.js +0 -4
- package/lib/Storage/engine/cookie.js +0 -22
- package/lib/Storage/engine/local-storage.js +0 -37
- package/lib/Storage/index.js +0 -23
- package/lib/User/index.js +0 -6
- package/lib/User/use-did.js +0 -59
- package/lib/User/wrap-did.js +0 -13
- package/lib/WebWalletSWKeeper/index.js +0 -5
- package/lib/components/PassportSwitcher.js +0 -128
- package/lib/constant.js +0 -23
- package/lib/error.js +0 -8
- package/lib/hooks/use-locale.js +0 -7
- package/lib/index.js +0 -111
- package/lib/locales/en.js +0 -17
- package/lib/locales/index.js +0 -10
- package/lib/locales/zh.js +0 -17
- package/lib/node_modules/@blocklet/js-sdk/dist/index.js +0 -512
- package/lib/packages/did-connect/package.json.js +0 -7
- package/lib/types.d.ts +0 -355
- package/lib/utils.js +0 -225
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { jsx as l, jsxs as G } from "react/jsx-runtime";
|
|
2
|
-
import o from "prop-types";
|
|
3
|
-
import { Box as g } from "@mui/material";
|
|
4
|
-
import { LAST_USED_LOGIN_METHOD as re, LOGIN_PROVIDER as n, WALLET_LOGIN_METHOD as U, LOGIN_PROVIDER_NAME as se, LOGIN_PROVIDER_ICON_SIZE as h } from "@arcblock/ux/lib/Util/constant";
|
|
5
|
-
import { getWebWalletUrl as ne } from "@arcblock/ux/lib/Util/wallet";
|
|
6
|
-
import L from "lodash/noop";
|
|
7
|
-
import { useMemoizedFn as y } from "ahooks";
|
|
8
|
-
import x from "js-cookie";
|
|
9
|
-
import { getCookieOptions as le } from "@arcblock/ux/lib/Util";
|
|
10
|
-
import { useRef as M, useEffect as ie } from "react";
|
|
11
|
-
import { mergeSx as ae } from "@arcblock/ux/lib/Util/style";
|
|
12
|
-
import ce from "@arcblock/ux/lib/DIDConnect/provider-icon";
|
|
13
|
-
import { GA_LAST_LOGIN_METHOD as u } from "@arcblock/ux/lib/withTracker/constant";
|
|
14
|
-
import pe from "./mobile-login-item.js";
|
|
15
|
-
import me from "./web-login-item.js";
|
|
16
|
-
import ue from "./login-method-item.js";
|
|
17
|
-
import { useOAuth as de } from "../../../OAuth/context.js";
|
|
18
|
-
import { useStateContext as fe } from "../../contexts/state.js";
|
|
19
|
-
import { getAppId as ge, logger as he, getApiErrorMessage as Le } from "../../../utils.js";
|
|
20
|
-
import Ie from "./passkey-login-item.js";
|
|
21
|
-
import { usePasskey as ye } from "../../../Passkey/context.js";
|
|
22
|
-
import "../../../Passkey/actions.js";
|
|
23
|
-
import xe from "../../plugins/email/index.js";
|
|
24
|
-
function Me({
|
|
25
|
-
onSuccess: O = L,
|
|
26
|
-
onError: A = L,
|
|
27
|
-
size: c = "small",
|
|
28
|
-
tokenState: r,
|
|
29
|
-
webWalletUrl: F = ne(),
|
|
30
|
-
tokenKey: j,
|
|
31
|
-
passkeyBehavior: B = "none",
|
|
32
|
-
onReset: I = L,
|
|
33
|
-
showMobileLogin: H = !0,
|
|
34
|
-
showOAuthLogin: E = !0,
|
|
35
|
-
showPasskeyLogin: b = !0,
|
|
36
|
-
showWebLogin: V = !0,
|
|
37
|
-
showEmailLogin: d = !0,
|
|
38
|
-
oauthProviderList: q = [],
|
|
39
|
-
slotProps: K = {},
|
|
40
|
-
disableSwitchApp: v = !1,
|
|
41
|
-
forceUpdate: Y = L,
|
|
42
|
-
magicToken: w = void 0,
|
|
43
|
-
baseUrl: Z = "/",
|
|
44
|
-
customItems: $ = []
|
|
45
|
-
}) {
|
|
46
|
-
const _ = M(null), P = M(null), C = M(null), { loginOAuth: z, logoutOAuth: J, t: f, oauthState: s } = de(), { passkeyState: T } = ye(), { extraParams: R, locale: Q, connectState: t, plugins: D, setPlugins: X, setSelectedPlugin: ee, getPlugin: N, lastLoginMethod: i } = fe(), W = y(async (e) => {
|
|
47
|
-
localStorage.setItem(u, e.provider), r.reset(), s.reset({
|
|
48
|
-
status: "scanned"
|
|
49
|
-
}), T.reset(), t.chooseMethod = e.provider, t.walletMethod = "";
|
|
50
|
-
const p = R?.sourceAppPid;
|
|
51
|
-
try {
|
|
52
|
-
s.loading = !0, s.status = "scanned";
|
|
53
|
-
const m = await z(e, {
|
|
54
|
-
action: r.action,
|
|
55
|
-
...R
|
|
56
|
-
}), a = le({ returnDomain: !1 });
|
|
57
|
-
x.remove("connected_did", a), x.remove("connected_pk", a), x.remove("connected_wallet_os", a), m?.sessionToken && (localStorage.setItem(re, e.provider), await O(
|
|
58
|
-
{
|
|
59
|
-
...m,
|
|
60
|
-
encrypted: !1
|
|
61
|
-
},
|
|
62
|
-
(te) => te,
|
|
63
|
-
{
|
|
64
|
-
sourceAppPid: p,
|
|
65
|
-
connected_app: ge(r.appInfo, r.memberAppInfo)
|
|
66
|
-
}
|
|
67
|
-
), s.loading = !1, s.status = "succeed");
|
|
68
|
-
} catch (m) {
|
|
69
|
-
he.error(`Failed login OAuth: ${e.provider}`, m);
|
|
70
|
-
const a = Le(m, f("loginOAuthFailed"));
|
|
71
|
-
s.loading = !1, s.error = a, s.status = "error", await J({ provider: e.provider }), A(new Error(a));
|
|
72
|
-
}
|
|
73
|
-
}), k = y(async () => {
|
|
74
|
-
r.reset(), await I(), r.status = "created", t.chooseMethod = "wallet", t.walletMethod = "";
|
|
75
|
-
}), S = xe({ baseUrl: Z }), oe = y(() => {
|
|
76
|
-
if (w && d && D.some((e) => e.name === n.EMAIL)) {
|
|
77
|
-
const e = N(n.EMAIL);
|
|
78
|
-
e.state.status === "idle" && (localStorage.setItem(u, n.EMAIL), e.state.reset(), e.state.magicToken = w, t.chooseMethod = n.EMAIL, ee(e), Y());
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
return ie(() => {
|
|
82
|
-
const e = [];
|
|
83
|
-
if (d) {
|
|
84
|
-
const p = N(n.EMAIL);
|
|
85
|
-
p && p.baseUrl === S.baseUrl ? e.push(p) : e.push(S);
|
|
86
|
-
}
|
|
87
|
-
X(e), t.retryConnect = k, setTimeout(() => {
|
|
88
|
-
oe();
|
|
89
|
-
}, 100);
|
|
90
|
-
}, [d]), /* @__PURE__ */ l(g, { className: "did-connect__choose", sx: ae({ flex: 1 }, K?.root?.sx), children: /* @__PURE__ */ l(
|
|
91
|
-
g,
|
|
92
|
-
{
|
|
93
|
-
sx: {
|
|
94
|
-
display: "flex",
|
|
95
|
-
flexDirection: "column",
|
|
96
|
-
gap: 2
|
|
97
|
-
},
|
|
98
|
-
children: /* @__PURE__ */ G(
|
|
99
|
-
g,
|
|
100
|
-
{
|
|
101
|
-
sx: [
|
|
102
|
-
{
|
|
103
|
-
display: "flex",
|
|
104
|
-
flexDirection: "column",
|
|
105
|
-
gap: 1.5
|
|
106
|
-
}
|
|
107
|
-
],
|
|
108
|
-
children: [
|
|
109
|
-
H && /* @__PURE__ */ l(
|
|
110
|
-
pe,
|
|
111
|
-
{
|
|
112
|
-
t: f,
|
|
113
|
-
isLatest: i && i === U.MOBILE,
|
|
114
|
-
ref: _,
|
|
115
|
-
tokenState: r,
|
|
116
|
-
sx: [c === "small" ? { p: 1 } : { p: 2 }],
|
|
117
|
-
locale: Q,
|
|
118
|
-
tokenKey: j,
|
|
119
|
-
disableSwitchApp: v,
|
|
120
|
-
onClick: async () => {
|
|
121
|
-
localStorage.setItem(u, n.WALLET), r.reset(), await I(), r.status = "created", t.chooseMethod = "wallet";
|
|
122
|
-
const e = _.current?.connect;
|
|
123
|
-
t.retryConnect = () => {
|
|
124
|
-
e(k);
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
),
|
|
129
|
-
V && /* @__PURE__ */ l(
|
|
130
|
-
me,
|
|
131
|
-
{
|
|
132
|
-
isLatest: i && i === U.WEB,
|
|
133
|
-
ref: P,
|
|
134
|
-
tokenState: r,
|
|
135
|
-
webWalletUrl: F,
|
|
136
|
-
t: f,
|
|
137
|
-
sx: [c === "small" ? { p: 1 } : { p: 2 }],
|
|
138
|
-
disableSwitchApp: v,
|
|
139
|
-
onClick: () => {
|
|
140
|
-
localStorage.setItem(u, n.WALLET), r.status = "scanned", t.chooseMethod = "wallet-web";
|
|
141
|
-
const e = P.current.connect;
|
|
142
|
-
t.retryConnect = async () => {
|
|
143
|
-
await I(), r.error = "", r.status = "scanned", e();
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
),
|
|
148
|
-
E || b || d ? /* @__PURE__ */ G(
|
|
149
|
-
g,
|
|
150
|
-
{
|
|
151
|
-
sx: [
|
|
152
|
-
{
|
|
153
|
-
display: "flex",
|
|
154
|
-
flexDirection: "column",
|
|
155
|
-
gap: 1.5
|
|
156
|
-
}
|
|
157
|
-
],
|
|
158
|
-
children: [
|
|
159
|
-
D.map(
|
|
160
|
-
(e) => e.renderListItem({
|
|
161
|
-
key: e.name,
|
|
162
|
-
sx: [c === "small" ? { p: 1 } : { p: 2 }]
|
|
163
|
-
// forceUpdate,
|
|
164
|
-
})
|
|
165
|
-
),
|
|
166
|
-
E ? q.map((e) => /* @__PURE__ */ l(
|
|
167
|
-
ue,
|
|
168
|
-
{
|
|
169
|
-
t: f,
|
|
170
|
-
isLatest: i && i === e.provider,
|
|
171
|
-
title: se[e.provider],
|
|
172
|
-
icon: /* @__PURE__ */ l(
|
|
173
|
-
ce,
|
|
174
|
-
{
|
|
175
|
-
provider: e.provider,
|
|
176
|
-
sx: {
|
|
177
|
-
transform: "scale(0.95)",
|
|
178
|
-
width: h,
|
|
179
|
-
height: h,
|
|
180
|
-
color: "text.primary"
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
),
|
|
184
|
-
onClick: () => {
|
|
185
|
-
W(e), t.retryConnect = () => {
|
|
186
|
-
W(e);
|
|
187
|
-
};
|
|
188
|
-
},
|
|
189
|
-
sx: [c === "small" ? { p: 1 } : { p: 2 }]
|
|
190
|
-
},
|
|
191
|
-
e.provider
|
|
192
|
-
)) : null,
|
|
193
|
-
b ? /* @__PURE__ */ l(
|
|
194
|
-
Ie,
|
|
195
|
-
{
|
|
196
|
-
ref: C,
|
|
197
|
-
onSuccess: O,
|
|
198
|
-
onError: A,
|
|
199
|
-
tokenState: r,
|
|
200
|
-
behavior: B,
|
|
201
|
-
sx: [c === "small" ? { p: 1 } : { p: 2 }],
|
|
202
|
-
onClick: () => {
|
|
203
|
-
localStorage.setItem(u, n.PASSKEY);
|
|
204
|
-
const e = C.current.connect;
|
|
205
|
-
t.chooseMethod = "passkey", t.walletMethod = "", t.retryConnect = () => {
|
|
206
|
-
T.verifying = !0, t.chooseMethod = "passkey", e();
|
|
207
|
-
};
|
|
208
|
-
},
|
|
209
|
-
slotProps: {
|
|
210
|
-
icon: {
|
|
211
|
-
sx: {
|
|
212
|
-
fontSize: h,
|
|
213
|
-
"& svg": {
|
|
214
|
-
fontSize: h,
|
|
215
|
-
width: "1em",
|
|
216
|
-
height: "1em"
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
) : null
|
|
223
|
-
]
|
|
224
|
-
}
|
|
225
|
-
) : null,
|
|
226
|
-
$.map((e) => e || null)
|
|
227
|
-
]
|
|
228
|
-
}
|
|
229
|
-
)
|
|
230
|
-
}
|
|
231
|
-
) });
|
|
232
|
-
}
|
|
233
|
-
Me.propTypes = {
|
|
234
|
-
onSuccess: o.func,
|
|
235
|
-
onError: o.func,
|
|
236
|
-
size: o.oneOf(["small", "normal", "large"]),
|
|
237
|
-
tokenState: o.object.isRequired,
|
|
238
|
-
webWalletUrl: o.string,
|
|
239
|
-
tokenKey: o.string.isRequired,
|
|
240
|
-
passkeyBehavior: o.oneOf(["none", "both", "only-existing", "only-new"]),
|
|
241
|
-
onReset: o.func,
|
|
242
|
-
showMobileLogin: o.bool,
|
|
243
|
-
showOAuthLogin: o.bool,
|
|
244
|
-
showPasskeyLogin: o.bool,
|
|
245
|
-
showWebLogin: o.bool,
|
|
246
|
-
showEmailLogin: o.bool,
|
|
247
|
-
oauthProviderList: o.array,
|
|
248
|
-
slotProps: o.object,
|
|
249
|
-
disableSwitchApp: o.bool,
|
|
250
|
-
forceUpdate: o.func,
|
|
251
|
-
magicToken: o.string,
|
|
252
|
-
baseUrl: o.string,
|
|
253
|
-
customItems: o.arrayOf(o.node)
|
|
254
|
-
};
|
|
255
|
-
export {
|
|
256
|
-
Me as default
|
|
257
|
-
};
|
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
import { jsx as l, jsxs as ho } from "react/jsx-runtime";
|
|
2
|
-
import e from "prop-types";
|
|
3
|
-
import { Box as E } from "@mui/material";
|
|
4
|
-
import { LAST_USED_LOGIN_METHOD as uo, LOGIN_PROVIDER as t, WALLET_LOGIN_METHOD as J, LOGIN_PROVIDER_ICON_SIZE as A, LOGIN_PROVIDER_NAME as go } from "@arcblock/ux/lib/Util/constant";
|
|
5
|
-
import { checkSameProtocol as fo, getWebWalletUrl as Lo } from "@arcblock/ux/lib/Util/wallet";
|
|
6
|
-
import M from "lodash/noop";
|
|
7
|
-
import { useMemoizedFn as c, useCreation as yo } from "ahooks";
|
|
8
|
-
import v from "js-cookie";
|
|
9
|
-
import { detectWalletExtension as Io, getCookieOptions as Eo } from "@arcblock/ux/lib/Util";
|
|
10
|
-
import { useRef as w, useEffect as X } from "react";
|
|
11
|
-
import { mergeSx as Ao } from "@arcblock/ux/lib/Util/style";
|
|
12
|
-
import Mo from "@arcblock/ux/lib/DIDConnect/provider-icon";
|
|
13
|
-
import { GA_LAST_LOGIN_METHOD as L } from "@arcblock/ux/lib/withTracker/constant";
|
|
14
|
-
import { translate as bo } from "@arcblock/ux/lib/Locale/util";
|
|
15
|
-
import xo from "@arcblock/ux/lib/Empty";
|
|
16
|
-
import { useBrowser as _o } from "@arcblock/react-hooks";
|
|
17
|
-
import Co from "./mobile-login-item.js";
|
|
18
|
-
import Oo from "./web-login-item.js";
|
|
19
|
-
import Po from "./login-method-item.js";
|
|
20
|
-
import vo from "./wallet-login-options.js";
|
|
21
|
-
import { useOAuth as wo } from "../../../OAuth/context.js";
|
|
22
|
-
import { useStateContext as To } from "../../contexts/state.js";
|
|
23
|
-
import { getAppId as Wo, logger as So, getApiErrorMessage as ko } from "../../../utils.js";
|
|
24
|
-
import Do from "./passkey-login-item.js";
|
|
25
|
-
import { usePasskey as No } from "../../../Passkey/context.js";
|
|
26
|
-
import "../../../Passkey/actions.js";
|
|
27
|
-
import Ro from "../../plugins/email/index.js";
|
|
28
|
-
import jo from "../../assets/locale.js";
|
|
29
|
-
function Bo({
|
|
30
|
-
onSuccess: T = M,
|
|
31
|
-
onError: W = M,
|
|
32
|
-
size: m = "small",
|
|
33
|
-
tokenState: n,
|
|
34
|
-
webWalletUrl: b = Lo(),
|
|
35
|
-
tokenKey: S,
|
|
36
|
-
passkeyBehavior: k = "none",
|
|
37
|
-
onReset: x = M,
|
|
38
|
-
providerList: d = [],
|
|
39
|
-
slotProps: z = {},
|
|
40
|
-
disableSwitchApp: _ = !1,
|
|
41
|
-
forceUpdate: Q = M,
|
|
42
|
-
magicToken: D = void 0,
|
|
43
|
-
baseUrl: oo = "/",
|
|
44
|
-
customItems: eo = [],
|
|
45
|
-
qrcode: to = null,
|
|
46
|
-
hideQRCode: p = !1
|
|
47
|
-
}) {
|
|
48
|
-
const C = w(null), O = w(null), N = w(null), no = fo(b), R = Io(), h = _o(), { loginOAuth: ro, logoutOAuth: io, t: lo, oauthState: s } = wo(), { passkeyState: j } = No(), {
|
|
49
|
-
extraParams: B,
|
|
50
|
-
locale: G,
|
|
51
|
-
connectState: r,
|
|
52
|
-
plugins: F,
|
|
53
|
-
setPlugins: so,
|
|
54
|
-
setSelectedPlugin: ao,
|
|
55
|
-
getPlugin: U,
|
|
56
|
-
showWalletOptions: f,
|
|
57
|
-
setShowWalletOptions: y,
|
|
58
|
-
lastLoginMethod: u
|
|
59
|
-
} = To(), I = c((o, i = {}) => bo(jo, o, G, "en", i)), q = c(async (o) => {
|
|
60
|
-
localStorage.setItem(L, o.provider), n.reset(), s.reset({
|
|
61
|
-
status: "scanned"
|
|
62
|
-
}), j.reset(), r.chooseMethod = o.provider, r.walletMethod = "";
|
|
63
|
-
const i = B?.sourceAppPid;
|
|
64
|
-
try {
|
|
65
|
-
s.loading = !0, s.status = "scanned";
|
|
66
|
-
const a = await ro(o, {
|
|
67
|
-
action: n.action,
|
|
68
|
-
...B
|
|
69
|
-
}), g = Eo({ returnDomain: !1 });
|
|
70
|
-
v.remove("connected_did", g), v.remove("connected_pk", g), v.remove("connected_wallet_os", g), a?.sessionToken && (localStorage.setItem(uo, o.provider), await T(
|
|
71
|
-
{
|
|
72
|
-
...a,
|
|
73
|
-
encrypted: !1
|
|
74
|
-
},
|
|
75
|
-
(po) => po,
|
|
76
|
-
{
|
|
77
|
-
sourceAppPid: i,
|
|
78
|
-
connected_app: Wo(n.appInfo, n.memberAppInfo)
|
|
79
|
-
}
|
|
80
|
-
), s.loading = !1, s.status = "succeed");
|
|
81
|
-
} catch (a) {
|
|
82
|
-
So.error(`Failed login OAuth: ${o.provider}`, a);
|
|
83
|
-
const g = ko(a, lo("loginOAuthFailed"));
|
|
84
|
-
s.loading = !1, s.error = g, s.status = "error", await io({ provider: o.provider }), W(new Error(g));
|
|
85
|
-
}
|
|
86
|
-
}), H = c(async () => {
|
|
87
|
-
n.reset(), await x(), n.status = "created", r.chooseMethod = "wallet", r.walletMethod = "";
|
|
88
|
-
}), K = c(async () => {
|
|
89
|
-
localStorage.setItem(L, t.WALLET), n.reset(), await x(), n.status = "created", r.chooseMethod = "wallet";
|
|
90
|
-
const o = C.current?.connect;
|
|
91
|
-
r.retryConnect = () => {
|
|
92
|
-
o(H);
|
|
93
|
-
};
|
|
94
|
-
}), V = c(() => {
|
|
95
|
-
localStorage.setItem(L, t.WALLET), n.status = "scanned", r.chooseMethod = "wallet-web";
|
|
96
|
-
const o = O.current.connect;
|
|
97
|
-
r.retryConnect = async () => {
|
|
98
|
-
await x(), n.error = "", n.status = "scanned", o();
|
|
99
|
-
};
|
|
100
|
-
}), co = c(() => {
|
|
101
|
-
y(!1);
|
|
102
|
-
}), P = yo(() => d.length === 1 && d[0].provider === t.WALLET, [d]);
|
|
103
|
-
X(() => {
|
|
104
|
-
p && P && !h.mobile.any && !f && y(!0);
|
|
105
|
-
}, [p, P, h.mobile.any, y, f]);
|
|
106
|
-
const Y = d.some((o) => o.provider === t.EMAIL), Z = Ro({ baseUrl: oo }), mo = c(() => {
|
|
107
|
-
if (D && d.some((o) => o.name === t.EMAIL) && F.some((o) => o.name === t.EMAIL)) {
|
|
108
|
-
const o = U(t.EMAIL);
|
|
109
|
-
o.state.status === "idle" && (localStorage.setItem(L, t.EMAIL), o.state.reset(), o.state.magicToken = D, r.chooseMethod = t.EMAIL, ao(o), Q());
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
X(() => {
|
|
113
|
-
const o = [];
|
|
114
|
-
if (Y) {
|
|
115
|
-
const i = U(t.EMAIL);
|
|
116
|
-
i && i.baseUrl === Z.baseUrl ? o.push(i) : o.push(Z);
|
|
117
|
-
}
|
|
118
|
-
so(o), r.retryConnect = H, setTimeout(() => {
|
|
119
|
-
mo();
|
|
120
|
-
}, 100);
|
|
121
|
-
}, [Y]);
|
|
122
|
-
const $ = d.map((o) => {
|
|
123
|
-
if (o.provider === t.WALLET)
|
|
124
|
-
return h.mobile.any && !f ? /* @__PURE__ */ l(
|
|
125
|
-
Co,
|
|
126
|
-
{
|
|
127
|
-
t: I,
|
|
128
|
-
isLatest: u && u === J.MOBILE,
|
|
129
|
-
ref: C,
|
|
130
|
-
tokenState: n,
|
|
131
|
-
sx: [m === "small" ? { p: 1 } : { p: 2 }],
|
|
132
|
-
locale: G,
|
|
133
|
-
tokenKey: S,
|
|
134
|
-
disableSwitchApp: _,
|
|
135
|
-
onClick: K
|
|
136
|
-
},
|
|
137
|
-
t.WALLET
|
|
138
|
-
) : p || !p && (no || R) && (!h.mobile.any || R) ? /* @__PURE__ */ l(
|
|
139
|
-
Oo,
|
|
140
|
-
{
|
|
141
|
-
t: I,
|
|
142
|
-
isLatest: u && u === J.WEB,
|
|
143
|
-
ref: O,
|
|
144
|
-
tokenState: n,
|
|
145
|
-
webWalletUrl: b,
|
|
146
|
-
sx: [m === "small" ? { p: 1 } : { p: 2 }],
|
|
147
|
-
disableSwitchApp: _,
|
|
148
|
-
autoConnect: !p,
|
|
149
|
-
onClick: () => {
|
|
150
|
-
p ? y(!0) : V();
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
t.WALLET
|
|
154
|
-
) : null;
|
|
155
|
-
if (o.provider === t.PASSKEY)
|
|
156
|
-
return k === "none" ? null : /* @__PURE__ */ l(
|
|
157
|
-
Do,
|
|
158
|
-
{
|
|
159
|
-
ref: N,
|
|
160
|
-
onSuccess: T,
|
|
161
|
-
onError: W,
|
|
162
|
-
tokenState: n,
|
|
163
|
-
behavior: k,
|
|
164
|
-
sx: [m === "small" ? { p: 1 } : { p: 2 }],
|
|
165
|
-
onClick: () => {
|
|
166
|
-
localStorage.setItem(L, t.PASSKEY);
|
|
167
|
-
const i = N.current.connect;
|
|
168
|
-
r.chooseMethod = "passkey", r.walletMethod = "", r.retryConnect = () => {
|
|
169
|
-
j.verifying = !0, r.chooseMethod = "passkey", i();
|
|
170
|
-
};
|
|
171
|
-
},
|
|
172
|
-
slotProps: {
|
|
173
|
-
icon: {
|
|
174
|
-
sx: {
|
|
175
|
-
fontSize: A,
|
|
176
|
-
"& svg": {
|
|
177
|
-
fontSize: A,
|
|
178
|
-
width: "1em",
|
|
179
|
-
height: "1em"
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
t.PASSKEY
|
|
186
|
-
);
|
|
187
|
-
if (o.provider === t.EMAIL) {
|
|
188
|
-
const i = F.find((a) => a.name === t.EMAIL);
|
|
189
|
-
return i ? i?.renderListItem({
|
|
190
|
-
key: i.name,
|
|
191
|
-
sx: [m === "small" ? { p: 1 } : { p: 2 }]
|
|
192
|
-
// forceUpdate,
|
|
193
|
-
}) : null;
|
|
194
|
-
}
|
|
195
|
-
return o.type === "oauth" ? /* @__PURE__ */ l(
|
|
196
|
-
Po,
|
|
197
|
-
{
|
|
198
|
-
t: I,
|
|
199
|
-
isLatest: u && u === o.provider,
|
|
200
|
-
title: go[o.provider],
|
|
201
|
-
icon: /* @__PURE__ */ l(
|
|
202
|
-
Mo,
|
|
203
|
-
{
|
|
204
|
-
provider: o.provider,
|
|
205
|
-
sx: {
|
|
206
|
-
transform: "scale(0.95)",
|
|
207
|
-
width: A,
|
|
208
|
-
height: A,
|
|
209
|
-
color: "text.primary"
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
),
|
|
213
|
-
onClick: () => {
|
|
214
|
-
q(o), r.retryConnect = () => {
|
|
215
|
-
q(o);
|
|
216
|
-
};
|
|
217
|
-
},
|
|
218
|
-
sx: [m === "small" ? { p: 1.2 } : { p: 2 }]
|
|
219
|
-
},
|
|
220
|
-
o.provider
|
|
221
|
-
) : null;
|
|
222
|
-
}).filter(Boolean);
|
|
223
|
-
return /* @__PURE__ */ l(E, { className: "did-connect__choose", sx: Ao({ flex: 1 }, z?.root?.sx), children: /* @__PURE__ */ l(
|
|
224
|
-
E,
|
|
225
|
-
{
|
|
226
|
-
sx: {
|
|
227
|
-
display: "flex",
|
|
228
|
-
flexDirection: "column",
|
|
229
|
-
gap: 2
|
|
230
|
-
},
|
|
231
|
-
children: /* @__PURE__ */ ho(
|
|
232
|
-
E,
|
|
233
|
-
{
|
|
234
|
-
sx: [
|
|
235
|
-
{
|
|
236
|
-
display: "flex",
|
|
237
|
-
flexDirection: "column",
|
|
238
|
-
...f && !h.mobile.any ? { alignItems: "center", gap: 0 } : { gap: 1.5 }
|
|
239
|
-
}
|
|
240
|
-
],
|
|
241
|
-
children: [
|
|
242
|
-
f && !h.mobile.any ? /* @__PURE__ */ l(
|
|
243
|
-
vo,
|
|
244
|
-
{
|
|
245
|
-
qrcode: to,
|
|
246
|
-
tokenState: n,
|
|
247
|
-
webWalletUrl: b,
|
|
248
|
-
size: m,
|
|
249
|
-
disableSwitchApp: _,
|
|
250
|
-
tokenKey: S,
|
|
251
|
-
walletLoginRef: C,
|
|
252
|
-
webLoginRef: O,
|
|
253
|
-
onMobileLoginClick: K,
|
|
254
|
-
onWebLoginClick: V,
|
|
255
|
-
onBack: P ? void 0 : co
|
|
256
|
-
}
|
|
257
|
-
) : /* @__PURE__ */ l(
|
|
258
|
-
E,
|
|
259
|
-
{
|
|
260
|
-
sx: {
|
|
261
|
-
display: "grid",
|
|
262
|
-
gridTemplateColumns: "repeat(12, 1fr)",
|
|
263
|
-
gap: 1.5,
|
|
264
|
-
".arc-login-item:nth-child(-n+3)": {
|
|
265
|
-
gridColumn: "span 12"
|
|
266
|
-
},
|
|
267
|
-
// 当登录项大于等于 5 时,第三个登录项增加一个 marginBottom,用于分割独占一行的和一行多个的登录项
|
|
268
|
-
".arc-login-item:nth-child(3):nth-last-child(n+3)": {
|
|
269
|
-
mb: 1
|
|
270
|
-
},
|
|
271
|
-
".arc-login-item:nth-child(4):last-child": {
|
|
272
|
-
gridColumn: "span 12"
|
|
273
|
-
},
|
|
274
|
-
".arc-login-item:nth-child(4):nth-last-child(2), .arc-login-item:nth-child(4):nth-last-child(2), .arc-login-item:nth-child(4):nth-last-child(2) ~ .arc-login-item": {
|
|
275
|
-
gridColumn: "span 6",
|
|
276
|
-
justifyContent: "center",
|
|
277
|
-
".arc-login-item__body, .other-item-icon": {
|
|
278
|
-
display: "none"
|
|
279
|
-
}
|
|
280
|
-
},
|
|
281
|
-
".arc-login-item:nth-child(4):nth-last-child(3), .arc-login-item:nth-child(4):nth-last-child(3) ~ .arc-login-item": {
|
|
282
|
-
justifyContent: "center",
|
|
283
|
-
gridColumn: "span 4",
|
|
284
|
-
".arc-login-item__body, .other-item-icon": {
|
|
285
|
-
display: "none"
|
|
286
|
-
}
|
|
287
|
-
},
|
|
288
|
-
".arc-login-item:nth-child(4):nth-last-child(4), .arc-login-item:nth-child(4):nth-last-child(4) ~ .arc-login-item": {
|
|
289
|
-
gridColumn: "span 3",
|
|
290
|
-
justifyContent: "center",
|
|
291
|
-
".arc-login-item__body, .other-item-icon": {
|
|
292
|
-
display: "none"
|
|
293
|
-
}
|
|
294
|
-
},
|
|
295
|
-
"&:has(.arc-login-item:nth-child(8)) .arc-login-item:nth-child(n+4)": {
|
|
296
|
-
gridColumn: "span 3",
|
|
297
|
-
justifyContent: "center",
|
|
298
|
-
".arc-login-item__body, .other-item-icon": {
|
|
299
|
-
display: "none"
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
children: $.length > 0 ? $ : /* @__PURE__ */ l(
|
|
304
|
-
xo,
|
|
305
|
-
{
|
|
306
|
-
className: "arc-login-item",
|
|
307
|
-
sx: {
|
|
308
|
-
".empty-content": {
|
|
309
|
-
textAlign: "center"
|
|
310
|
-
}
|
|
311
|
-
},
|
|
312
|
-
children: I("noAuthenticationProvider")
|
|
313
|
-
}
|
|
314
|
-
)
|
|
315
|
-
}
|
|
316
|
-
),
|
|
317
|
-
eo.map((o) => o || null)
|
|
318
|
-
]
|
|
319
|
-
}
|
|
320
|
-
)
|
|
321
|
-
}
|
|
322
|
-
) });
|
|
323
|
-
}
|
|
324
|
-
Bo.propTypes = {
|
|
325
|
-
onSuccess: e.func,
|
|
326
|
-
onError: e.func,
|
|
327
|
-
size: e.oneOf(["small", "normal", "large"]),
|
|
328
|
-
tokenState: e.object.isRequired,
|
|
329
|
-
webWalletUrl: e.string,
|
|
330
|
-
tokenKey: e.string.isRequired,
|
|
331
|
-
passkeyBehavior: e.oneOf(["none", "both", "only-existing", "only-new"]),
|
|
332
|
-
onReset: e.func,
|
|
333
|
-
providerList: e.array,
|
|
334
|
-
slotProps: e.object,
|
|
335
|
-
disableSwitchApp: e.bool,
|
|
336
|
-
forceUpdate: e.func,
|
|
337
|
-
magicToken: e.string,
|
|
338
|
-
baseUrl: e.string,
|
|
339
|
-
customItems: e.arrayOf(e.node),
|
|
340
|
-
qrcode: e.node,
|
|
341
|
-
hideQRCode: e.bool
|
|
342
|
-
};
|
|
343
|
-
export {
|
|
344
|
-
Bo as default
|
|
345
|
-
};
|