@arcblock/did-connect-react 3.1.33 → 3.1.35

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,179 @@
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
+ S = l ? p(L) : L, u("handleLoginResult: setSessionToken", { decryptSessionToken: S }), v(S);
150
+ const re = l ? p(s) : s;
151
+ Q(re), f && (E = l ? p(f) : f, u("handleLoginResult: setRefreshToken", { decryptRefreshToken: E }), g(E));
152
+ }
153
+ a && (U = l ? p(a) : a, u("handleLoginResult: setVisitorId", { decryptVisitorId: U }), se(U));
148
154
  });
149
- return Z(
155
+ return oe(
150
156
  () => {
151
- Q(), F();
157
+ J(), G();
152
158
  },
153
- P,
159
+ B,
154
160
  { immediate: !0 }
155
161
  ), {
156
- renewToken: J,
157
- handleRefreshUser: G,
162
+ renewToken: H,
163
+ handleRefreshUser: K,
158
164
  handleRefreshToken: I,
159
- syncSessionSate: Y,
160
- handleLoginResult: W,
161
- decrypt: v,
162
- removeToken: h,
165
+ syncSessionSate: Z,
166
+ handleLoginResult: ee,
167
+ decrypt: p,
168
+ removeToken: k,
163
169
  clearSession: x,
164
- getSessionToken: y,
165
- getRefreshToken: w,
170
+ getSessionToken: w,
171
+ getRefreshToken: C,
166
172
  setRefreshToken: g,
167
- setSessionToken: C,
173
+ setSessionToken: v,
168
174
  service: _
169
175
  };
170
176
  }
171
177
  export {
172
- Ee as default
178
+ Ve as default
173
179
  };