@arcblock/did-connect-react 3.1.34 → 3.1.36

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,173 +1,181 @@
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
- import { setVisitorId as ee, getCookieOptions as re } from "@arcblock/ux/lib/Util";
6
- import oe from "jwt-decode";
7
- import ne from "@arcblock/ux/lib/Toast";
8
- import se from "p-retry";
9
- import te from "lodash/noop";
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";
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
15
  class T extends Error {
16
16
  }
17
- const ke = 10, v = (e) => de(e, localStorage.getItem("__encKey"), localStorage.getItem("__decKey"));
18
- function Ee({
17
+ const Re = 10, p = (e) => Te(e, localStorage.getItem("__encKey"), localStorage.getItem("__decKey"));
18
+ function Ve({
19
19
  state: e,
20
20
  pageState: i,
21
- serviceHost: p,
22
- sessionTokenStorage: O,
23
- refreshTokenStorage: V,
24
- lazyRefreshToken: N,
25
- apiOptions: b = {},
26
- onRefresh: z = te
21
+ serviceHost: R,
22
+ sessionTokenStorage: V,
23
+ csrfTokenStorage: b,
24
+ refreshTokenStorage: q,
25
+ lazyRefreshToken: z,
26
+ apiOptions: P = {},
27
+ onRefresh: j = le
27
28
  }) {
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,
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({
30
+ baseURL: R,
30
31
  timeout: 10 * 1e3,
31
32
  secure: !0
32
- }), [p]), h = () => {
33
- j(), B();
34
- }, _ = M(() => fe(
33
+ }), [R]), k = () => {
34
+ $(), X();
35
+ }, _ = N(() => de(
35
36
  {
36
- sessionTokenStorage: O,
37
- refreshTokenStorage: V,
38
- serviceHost: p,
37
+ sessionTokenStorage: V,
38
+ refreshTokenStorage: q,
39
+ serviceHost: R,
39
40
  authServicePrefix: i.prefix,
40
41
  onRefreshTokenError() {
41
- h(), e.user && (e.user = null);
42
+ k(), e.user && (e.user = null);
42
43
  }
43
44
  },
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"));
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();
51
+ r !== i.currentLocale && (i.currentLocale = r);
52
+ }), W = c(async () => {
53
+ const r = () => _.get(A(i.notificationPrefix, "/unread-count"));
53
54
  try {
54
- const { data: n } = await o();
55
+ const { data: n } = await r();
55
56
  return n.unReadCount;
56
57
  } catch (n) {
57
58
  return console.error("getUnreadCount error", n), 0;
58
59
  }
59
- }), D = c(
60
- async ({ showProgress: o = !1, requestFn: n = null, onlyRefreshToken: s = !1, type: t = "refreshToken" }) => {
60
+ }), F = c(
61
+ async ({ showProgress: r = !1, requestFn: n = null, onlyRefreshToken: t = !1, type: s = "refreshToken" }) => {
61
62
  try {
62
63
  if (e.loading)
63
64
  return console.warn("SessionProvider.refresh is currently in progress, call it will be noop"), { loading: !0 };
64
- o && (e.loading = !0);
65
- const { data: r, status: f } = await n(), a = r?.user?.did;
66
- if (a && ie.set({
65
+ r && (e.loading = !0);
66
+ const { data: o, status: f } = await n(), a = o?.user?.did;
67
+ if (a && ue.set({
67
68
  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) {
69
+ }), o?.user?.sourceProvider && localStorage.setItem(ae, o.user.sourceProvider), f === 400 && (k(), e.user = null, e.error = ""), o.error)
70
+ throw e.error = o.error, e.open = !1, e.unReadCount = 0, new Error(o.error);
71
+ if (o.user) {
71
72
  try {
72
- const l = await X();
73
+ const l = await W();
73
74
  e.unReadCount = l || 0;
74
75
  } catch (l) {
75
- A.error("getUnreadCount error", l), e.unReadCount = 0;
76
+ O.error("getUnreadCount error", l), e.unReadCount = 0;
76
77
  }
77
- r.nextToken && (C(r.nextToken), z({
78
- type: t,
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");
78
+ o.nextToken && (v(o.nextToken), j({
79
+ type: s,
80
+ sessionToken: o.nextToken,
81
+ refreshToken: o.nextRefreshToken,
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
84
  } else
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;
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");
86
+ return { data: o, status: f };
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
89
  } finally {
89
- o && (e.loading = !1);
90
+ r && (e.loading = !1);
90
91
  }
91
92
  }
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, {
93
+ ), I = c(async (r = !1, n = !1) => {
94
+ u("handleRefreshToken", { showProgress: r, onlyRefreshToken: n });
95
+ const t = () => Y.post(ne(A(i.prefix, "/refreshSession")), null, {
95
96
  headers: {
96
- authorization: `Bearer ${encodeURIComponent(w())}`
97
+ authorization: `Bearer ${encodeURIComponent(C())}`
97
98
  }
98
99
  });
99
100
  d(void 0);
100
101
  try {
101
- await D({ showProgress: o, requestFn: s, onlyRefreshToken: n, type: "refreshToken" }), R(0), d(m);
102
- } catch (t) {
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));
102
+ await F({ showProgress: r, requestFn: t, onlyRefreshToken: n, type: "refreshToken" }), y(0), d(m);
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
105
  }
105
- }), F = c((o = !1) => {
106
- if (N)
106
+ }), G = c((r = !1) => {
107
+ if (z)
107
108
  return;
108
- const n = y();
109
- let s = o;
110
- const t = (/* @__PURE__ */ new Date()).getTime();
109
+ const n = w();
110
+ let t = r;
111
+ const s = (/* @__PURE__ */ new Date()).getTime();
111
112
  if (n)
112
113
  try {
113
- const { exp: r, iat: f } = oe(n);
114
- r * 1e3 - t < t - f * 1e3 && (s = !0);
114
+ const { exp: o, iat: f } = ie(n);
115
+ o * 1e3 - s < s - f * 1e3 && (t = !0);
115
116
  } catch {
116
- s = !0;
117
+ t = !0;
117
118
  }
118
119
  else
119
- s = !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 }), {
120
+ t = !0;
121
+ t && (C() ? I(!1, !0) : (x(), e.user && (e.user = null)));
122
+ }), K = c(async ({ showProgress: r = !1, forceRefreshToken: n = !1 } = {}) => {
123
+ const t = () => fe(() => _.get(A(i.prefix, "/session"), { secure: !0 }), {
123
124
  retries: 2
124
125
  });
125
- u("handleRefreshUser", { showProgress: o, forceRefreshToken: n });
126
+ u("handleRefreshUser", { showProgress: r, forceRefreshToken: n });
126
127
  try {
127
128
  if (n)
128
129
  throw new T("need force refresh token");
129
- await D({ showProgress: o, requestFn: s, type: "refreshUser" });
130
- } catch (t) {
131
- t instanceof T && (u("handleRefreshUser failed, try to refresh token", { err: t }), await I());
130
+ await F({ showProgress: r, requestFn: t, type: "refreshUser" });
131
+ } catch (s) {
132
+ s instanceof T && (u("handleRefreshUser failed, try to refresh token", { err: s }), await I());
132
133
  }
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(() => {
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(() => {
137
138
  if (e.initialized && e.user)
138
139
  try {
139
- F();
140
+ G();
140
141
  } catch {
141
142
  }
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));
143
+ }), ee = c((r) => {
144
+ const n = Array.isArray(r) ? r[0] : r;
145
+ u("handleLoginResult", { loginResult: n, result: r });
146
+ const { loginToken: t, csrfToken: s, sessionToken: o, refreshToken: f, visitorId: a, encrypted: l = !0 } = n, L = t || o;
147
+ let S, E, U;
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);
152
+ }
153
+ f && (E = l ? p(f) : f, u("handleLoginResult: setRefreshToken", { decryptRefreshToken: E }), g(E));
154
+ }
155
+ a && (U = l ? p(a) : a, u("handleLoginResult: setVisitorId", { decryptVisitorId: U }), se(U));
148
156
  });
149
- return Z(
157
+ return oe(
150
158
  () => {
151
- Q(), F();
159
+ J(), G();
152
160
  },
153
- P,
161
+ B,
154
162
  { immediate: !0 }
155
163
  ), {
156
- renewToken: J,
157
- handleRefreshUser: G,
164
+ renewToken: H,
165
+ handleRefreshUser: K,
158
166
  handleRefreshToken: I,
159
- syncSessionSate: Y,
160
- handleLoginResult: W,
161
- decrypt: v,
162
- removeToken: h,
167
+ syncSessionSate: Z,
168
+ handleLoginResult: ee,
169
+ decrypt: p,
170
+ removeToken: k,
163
171
  clearSession: x,
164
- getSessionToken: y,
165
- getRefreshToken: w,
172
+ getSessionToken: w,
173
+ getRefreshToken: C,
166
174
  setRefreshToken: g,
167
- setSessionToken: C,
175
+ setSessionToken: v,
168
176
  service: _
169
177
  };
170
178
  }
171
179
  export {
172
- Ee as default
180
+ Ve as default
173
181
  };