@arcblock/did-connect-react 3.1.30 → 3.1.31

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.
@@ -0,0 +1,55 @@
1
+ import { ReactGA as t } from "@arcblock/ux/lib/withTracker";
2
+ import { GA_LAST_LOGIN_METHOD as n, GA_LAST_ROLE as l, GA_LAST_SOURCE_PROVIDER as i } from "@arcblock/ux/lib/withTracker/constant";
3
+ const S = () => {
4
+ const e = {
5
+ action: "loginSuccess",
6
+ provider: localStorage.getItem(n),
7
+ success: !0
8
+ };
9
+ t.event(e.action, e);
10
+ }, v = (e) => {
11
+ const s = {
12
+ action: "loginFailed",
13
+ provider: localStorage.getItem(n),
14
+ success: !1,
15
+ errorMessage: e.message
16
+ };
17
+ t.event(s.action, s);
18
+ }, p = (e, s, o) => {
19
+ const c = localStorage.getItem(l), r = o?.user?.role, a = {
20
+ action: "switchPassportSuccess",
21
+ change: `${c} -> ${r}`,
22
+ success: !0
23
+ };
24
+ t.event(a.action, a);
25
+ }, m = (e) => {
26
+ const s = {
27
+ action: "switchPassportFailed",
28
+ success: !1,
29
+ errorMessage: e.message
30
+ };
31
+ t.event(s.action, s);
32
+ }, _ = (e, s, o) => {
33
+ const c = {
34
+ action: "bindWalletSuccess",
35
+ provider: o?.user?.sourceProvider,
36
+ success: !0
37
+ };
38
+ t.event(c.action, c);
39
+ }, E = (e) => {
40
+ const s = {
41
+ action: "bindWalletFailed",
42
+ provider: localStorage.getItem(i),
43
+ success: !1,
44
+ errorMessage: e.message
45
+ };
46
+ t.event(s.action, s);
47
+ };
48
+ export {
49
+ E as gaBindWalletFailedHandler,
50
+ _ as gaBindWalletSuccessHandler,
51
+ v as gaLoginFailedHandler,
52
+ S as gaLoginSuccessHandler,
53
+ m as gaSwitchPassportFailedHandler,
54
+ p as gaSwitchPassportSuccessHandler
55
+ };
@@ -1,169 +1,173 @@
1
- import { useState as V } from "react";
2
- import { useCreation as b, useMemoizedFn as c, useInterval as Z } from "ahooks";
3
- import { joinURL as S, withQuery as H } from "ufo";
4
- import h from "js-cookie";
1
+ import { useState as K } from "react";
2
+ import { useCreation as M, useMemoizedFn as c, useInterval as Z } from "ahooks";
3
+ import { joinURL as U, withQuery as H } from "ufo";
4
+ import k from "js-cookie";
5
5
  import { setVisitorId as ee, getCookieOptions as re } from "@arcblock/ux/lib/Util";
6
- import ne from "jwt-decode";
7
- import oe from "@arcblock/ux/lib/Toast";
6
+ import oe from "jwt-decode";
7
+ import ne from "@arcblock/ux/lib/Toast";
8
8
  import se from "p-retry";
9
9
  import te from "lodash/noop";
10
- import ie from "../../Service/index.js";
11
- import { createAxios as ce, getBrowserLang as le, logger as O, debug as u, sleep as fe, decrypt as ue } from "../../utils.js";
12
- import { CHECK_INTERVAL_TIME as k, LANG_COOKIE_NAME as ae } from "../../constant.js";
13
- class m extends Error {
10
+ import { ReactGA as ie } from "@arcblock/ux/lib/withTracker";
11
+ import { GA_LAST_SOURCE_PROVIDER as ce } from "@arcblock/ux/lib/withTracker/constant";
12
+ import fe from "../../Service/index.js";
13
+ import { createAxios as le, getBrowserLang as ue, logger as A, debug as u, sleep as ae, decrypt as de } from "../../utils.js";
14
+ import { CHECK_INTERVAL_TIME as m, LANG_COOKIE_NAME as he } from "../../constant.js";
15
+ class T extends Error {
14
16
  }
15
- const de = 10, w = (e) => ue(e, localStorage.getItem("__encKey"), localStorage.getItem("__decKey"));
16
- function _e({
17
+ const ke = 10, v = (e) => de(e, localStorage.getItem("__encKey"), localStorage.getItem("__decKey"));
18
+ function Ee({
17
19
  state: e,
18
20
  pageState: i,
19
- serviceHost: T,
20
- sessionTokenStorage: A,
21
- refreshTokenStorage: q,
22
- lazyRefreshToken: z,
23
- apiOptions: D = {},
24
- onRefresh: j = te
21
+ serviceHost: p,
22
+ sessionTokenStorage: O,
23
+ refreshTokenStorage: V,
24
+ lazyRefreshToken: N,
25
+ apiOptions: b = {},
26
+ onRefresh: z = te
25
27
  }) {
26
- const [F, p] = V(0), [B, a] = V(k), { getToken: y, setToken: C, removeToken: G } = A, { getToken: R, setToken: g, removeToken: $ } = q, Q = b(() => ce({
27
- baseURL: T,
28
+ const [q, R] = K(0), [P, d] = K(m), { getToken: y, setToken: C, removeToken: j } = O, { getToken: w, setToken: g, removeToken: B } = V, $ = M(() => le({
29
+ baseURL: p,
28
30
  timeout: 10 * 1e3,
29
31
  secure: !0
30
- }), [T]), d = () => {
31
- G(), $();
32
- }, v = b(() => ie(
32
+ }), [p]), h = () => {
33
+ j(), B();
34
+ }, _ = M(() => fe(
33
35
  {
34
- sessionTokenStorage: A,
35
- refreshTokenStorage: q,
36
- serviceHost: T,
36
+ sessionTokenStorage: O,
37
+ refreshTokenStorage: V,
38
+ serviceHost: p,
37
39
  authServicePrefix: i.prefix,
38
40
  onRefreshTokenError() {
39
- d(), e.user && (e.user = null);
41
+ h(), e.user && (e.user = null);
40
42
  }
41
43
  },
42
- D
43
- ), [T, i.prefix]), x = () => {
44
- const r = re({ returnDomain: !1 });
45
- h.remove("connected_did", r), h.remove("connected_pk", r), h.remove("connected_app", r), h.remove("connected_wallet_os", r), d();
46
- }, X = c(() => {
47
- const r = h.get(ae) || le();
48
- r !== i.currentLocale && (i.currentLocale = r);
49
- }), Y = c(async () => {
50
- const r = () => v.get(S(i.notificationPrefix, "/unread-count"));
44
+ b
45
+ ), [p, i.prefix]), x = () => {
46
+ const o = re({ returnDomain: !1 });
47
+ k.remove("connected_did", o), k.remove("connected_pk", o), k.remove("connected_app", o), k.remove("connected_wallet_os", o), h();
48
+ }, Q = c(() => {
49
+ const o = k.get(he) || ue();
50
+ o !== i.currentLocale && (i.currentLocale = o);
51
+ }), X = c(async () => {
52
+ const o = () => _.get(U(i.notificationPrefix, "/unread-count"));
51
53
  try {
52
- const { data: o } = await r();
53
- return o.unReadCount;
54
- } catch (o) {
55
- return console.error("getUnreadCount error", o), 0;
54
+ const { data: n } = await o();
55
+ return n.unReadCount;
56
+ } catch (n) {
57
+ return console.error("getUnreadCount error", n), 0;
56
58
  }
57
- }), K = c(
58
- async ({ showProgress: r = !1, requestFn: o = null, onlyRefreshToken: s = !1, type: t = "refreshToken" }) => {
59
+ }), D = c(
60
+ async ({ showProgress: o = !1, requestFn: n = null, onlyRefreshToken: s = !1, type: t = "refreshToken" }) => {
59
61
  try {
60
62
  if (e.loading)
61
63
  return console.warn("SessionProvider.refresh is currently in progress, call it will be noop"), { loading: !0 };
62
- r && (e.loading = !0);
63
- const { data: n, status: l } = await o();
64
- if (l === 400 && (d(), e.user = null, e.error = ""), n.error)
65
- throw e.error = n.error, e.open = !1, e.unReadCount = 0, new Error(n.error);
66
- if (n.user) {
64
+ o && (e.loading = !0);
65
+ const { data: r, status: f } = await n(), a = r?.user?.did;
66
+ if (a && ie.set({
67
+ user_id: a
68
+ }), r?.user?.sourceProvider && localStorage.setItem(ce, r.user.sourceProvider), f === 400 && (h(), e.user = null, e.error = ""), r.error)
69
+ throw e.error = r.error, e.open = !1, e.unReadCount = 0, new Error(r.error);
70
+ if (r.user) {
67
71
  try {
68
- const f = await Y();
69
- e.unReadCount = f || 0;
70
- } catch (f) {
71
- O.error("getUnreadCount error", f), e.unReadCount = 0;
72
+ const l = await X();
73
+ e.unReadCount = l || 0;
74
+ } catch (l) {
75
+ A.error("getUnreadCount error", l), e.unReadCount = 0;
72
76
  }
73
- n.nextToken && (C(n.nextToken), j({
77
+ r.nextToken && (C(r.nextToken), z({
74
78
  type: t,
75
- sessionToken: n.nextToken,
76
- refreshToken: n.nextRefreshToken,
77
- user: n.user
78
- }), n.nextRefreshToken && g(n.nextRefreshToken)), s || (e.open = !1, e.user = n.user, e.provider = n.provider, e.walletOS = n.walletOS), y() || oe.error("Can't write session token, please use https url to access this page");
79
+ sessionToken: r.nextToken,
80
+ refreshToken: r.nextRefreshToken,
81
+ user: r.user
82
+ }), r.nextRefreshToken && g(r.nextRefreshToken)), s || (e.open = !1, e.user = r.user, e.provider = r.provider, e.walletOS = r.walletOS), y() || ne.error("Can't write session token, please use https url to access this page");
79
83
  } else
80
- throw r && (e.loading = i.autoConnect), e.open = i.autoConnect, e.user = null, e.provider = "", e.walletOS = "", e.unReadCount = 0, new m("Invalid token");
81
- return { data: n, status: l };
82
- } catch (n) {
83
- throw O.error("SessionProvider.refresh error", n), e.open = !1, e.error = n.message, n?.response?.status === 400 ? new m("Invalid token") : n;
84
+ throw o && (e.loading = i.autoConnect), e.open = i.autoConnect, e.user = null, e.provider = "", e.walletOS = "", e.unReadCount = 0, new T("Invalid token");
85
+ return { data: r, status: f };
86
+ } catch (r) {
87
+ throw A.error("SessionProvider.refresh error", r), e.open = !1, e.error = r.message, r?.response?.status === 400 ? new T("Invalid token") : r;
84
88
  } finally {
85
- r && (e.loading = !1);
89
+ o && (e.loading = !1);
86
90
  }
87
91
  }
88
- ), _ = c(async (r = !1, o = !1) => {
89
- u("handleRefreshToken", { showProgress: r, onlyRefreshToken: o });
90
- const s = () => Q.post(H(S(i.prefix, "/refreshSession")), null, {
92
+ ), I = c(async (o = !1, n = !1) => {
93
+ u("handleRefreshToken", { showProgress: o, onlyRefreshToken: n });
94
+ const s = () => $.post(H(U(i.prefix, "/refreshSession")), null, {
91
95
  headers: {
92
- authorization: `Bearer ${encodeURIComponent(R())}`
96
+ authorization: `Bearer ${encodeURIComponent(w())}`
93
97
  }
94
98
  });
95
- a(void 0);
99
+ d(void 0);
96
100
  try {
97
- await K({ showProgress: r, requestFn: s, onlyRefreshToken: o, type: "refreshToken" }), p(0), a(k);
101
+ await D({ showProgress: o, requestFn: s, onlyRefreshToken: n, type: "refreshToken" }), R(0), d(m);
98
102
  } catch (t) {
99
- t instanceof m ? (console.warn("refresh token failed, remove all tokens"), p(0), d(), a(k)) : (O.error("refresh token failed, unexpected error:", t), p(F + 1), await fe(k), F >= de ? (p(0), a(void 0)) : a(k));
103
+ t instanceof T ? (console.warn("refresh token failed, remove all tokens"), R(0), h(), d(m)) : (A.error("refresh token failed, unexpected error:", t), R(q + 1), await ae(m), q >= ke ? (R(0), d(void 0)) : d(m));
100
104
  }
101
- }), M = c((r = !1) => {
102
- if (z)
105
+ }), F = c((o = !1) => {
106
+ if (N)
103
107
  return;
104
- const o = y();
105
- let s = r;
108
+ const n = y();
109
+ let s = o;
106
110
  const t = (/* @__PURE__ */ new Date()).getTime();
107
- if (o)
111
+ if (n)
108
112
  try {
109
- const { exp: n, iat: l } = ne(o);
110
- n * 1e3 - t < t - l * 1e3 && (s = !0);
113
+ const { exp: r, iat: f } = oe(n);
114
+ r * 1e3 - t < t - f * 1e3 && (s = !0);
111
115
  } catch {
112
116
  s = !0;
113
117
  }
114
118
  else
115
119
  s = !0;
116
- s && (R() ? _(!1, !0) : (x(), e.user && (e.user = null)));
117
- }), N = c(async ({ showProgress: r = !1, forceRefreshToken: o = !1 } = {}) => {
118
- const s = () => se(() => v.get(S(i.prefix, "/session"), { secure: !0 }), {
120
+ s && (w() ? I(!1, !0) : (x(), e.user && (e.user = null)));
121
+ }), G = c(async ({ showProgress: o = !1, forceRefreshToken: n = !1 } = {}) => {
122
+ const s = () => se(() => _.get(U(i.prefix, "/session"), { secure: !0 }), {
119
123
  retries: 2
120
124
  });
121
- u("handleRefreshUser", { showProgress: r, forceRefreshToken: o });
125
+ u("handleRefreshUser", { showProgress: o, forceRefreshToken: n });
122
126
  try {
123
- if (o)
124
- throw new m("need force refresh token");
125
- await K({ showProgress: r, requestFn: s, type: "refreshUser" });
127
+ if (n)
128
+ throw new T("need force refresh token");
129
+ await D({ showProgress: o, requestFn: s, type: "refreshUser" });
126
130
  } catch (t) {
127
- t instanceof m && (u("handleRefreshUser failed, try to refresh token", { err: t }), await _());
131
+ t instanceof T && (u("handleRefreshUser failed, try to refresh token", { err: t }), await I());
128
132
  }
129
- }), J = c(async () => {
130
- const r = y(), o = R();
131
- e.user || (r || o ? await N() : (x(), e.user && (e.user = null)));
132
- }), P = c(() => {
133
+ }), Y = c(async () => {
134
+ const o = y(), n = w();
135
+ e.user || (o || n ? await G() : (x(), e.user && (e.user = null)));
136
+ }), J = c(() => {
133
137
  if (e.initialized && e.user)
134
138
  try {
135
- M();
139
+ F();
136
140
  } catch {
137
141
  }
138
- }), W = c((r) => {
139
- const o = Array.isArray(r) ? r[0] : r;
140
- u("handleLoginResult", { loginResult: o, result: r });
141
- const { loginToken: s, sessionToken: t, refreshToken: n, visitorId: l, encrypted: f = !0 } = o, I = s || t;
142
- let L, U, E;
143
- I && (L = f ? w(I) : I, u("handleLoginResult: setSessionToken", { decryptSessionToken: L }), C(L), n && (U = f ? w(n) : n, u("handleLoginResult: setRefreshToken", { decryptRefreshToken: U }), g(U))), l && (E = f ? w(l) : l, u("handleLoginResult: setVisitorId", { decryptVisitorId: E }), ee(E));
142
+ }), W = c((o) => {
143
+ const n = Array.isArray(o) ? o[0] : o;
144
+ u("handleLoginResult", { loginResult: n, result: o });
145
+ const { loginToken: s, sessionToken: t, refreshToken: r, visitorId: f, encrypted: a = !0 } = n, l = s || t;
146
+ let L, S, E;
147
+ l && (L = a ? v(l) : l, u("handleLoginResult: setSessionToken", { decryptSessionToken: L }), C(L), r && (S = a ? v(r) : r, u("handleLoginResult: setRefreshToken", { decryptRefreshToken: S }), g(S))), f && (E = a ? v(f) : f, u("handleLoginResult: setVisitorId", { decryptVisitorId: E }), ee(E));
144
148
  });
145
149
  return Z(
146
150
  () => {
147
- X(), M();
151
+ Q(), F();
148
152
  },
149
- B,
153
+ P,
150
154
  { immediate: !0 }
151
155
  ), {
152
- renewToken: P,
153
- handleRefreshUser: N,
154
- handleRefreshToken: _,
155
- syncSessionSate: J,
156
+ renewToken: J,
157
+ handleRefreshUser: G,
158
+ handleRefreshToken: I,
159
+ syncSessionSate: Y,
156
160
  handleLoginResult: W,
157
- decrypt: w,
158
- removeToken: d,
161
+ decrypt: v,
162
+ removeToken: h,
159
163
  clearSession: x,
160
164
  getSessionToken: y,
161
- getRefreshToken: R,
165
+ getRefreshToken: w,
162
166
  setRefreshToken: g,
163
167
  setSessionToken: C,
164
- service: v
168
+ service: _
165
169
  };
166
170
  }
167
171
  export {
168
- _e as default
172
+ Ee as default
169
173
  };