@arcblock/did-connect-react 3.1.56 → 3.1.58

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