powr-sdk-web 6.0.0 → 6.1.0
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/auth/index.js +2 -2
- package/dist/index.js +86 -0
- package/dist/session/index.js +217 -0
- package/dist/shell/PowrBaseAppWrapper.js +330 -0
- package/dist/shell/index.js +20 -0
- package/dist/shell/parts.js +267 -0
- package/dist/shell/styles.js +241 -0
- package/dist/theme/PowrThemeSettings.js +276 -0
- package/dist/theme/index.js +8 -0
- package/dist/utils/useMediaQuery.js +37 -0
- package/package.json +1 -1
package/dist/auth/index.js
CHANGED
|
@@ -688,13 +688,13 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
688
688
|
style: styles.card
|
|
689
689
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
690
690
|
style: styles.header
|
|
691
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
691
|
+
}, appLogo ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
692
692
|
style: styles.logoContainer
|
|
693
693
|
}, /*#__PURE__*/_react["default"].createElement("img", {
|
|
694
694
|
src: appLogo,
|
|
695
695
|
alt: "".concat(appName, " Logo"),
|
|
696
696
|
style: styles.logoImage
|
|
697
|
-
})), /*#__PURE__*/_react["default"].createElement("h1", {
|
|
697
|
+
})) : null, /*#__PURE__*/_react["default"].createElement("h1", {
|
|
698
698
|
style: styles.title
|
|
699
699
|
}, isLogin ? 'Welcome to' : 'Join', " ", appName), /*#__PURE__*/_react["default"].createElement("div", {
|
|
700
700
|
style: styles.subtitleContainer
|
package/dist/index.js
CHANGED
|
@@ -58,6 +58,12 @@ Object.defineProperty(exports, "OnboardingShell", {
|
|
|
58
58
|
return _onboarding.OnboardingShell;
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
|
+
Object.defineProperty(exports, "POWR_ADMIN_ACCESS", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function get() {
|
|
64
|
+
return _session.POWR_ADMIN_ACCESS;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
61
67
|
Object.defineProperty(exports, "POWR_CSS_VAR_NAMES", {
|
|
62
68
|
enumerable: true,
|
|
63
69
|
get: function get() {
|
|
@@ -76,6 +82,18 @@ Object.defineProperty(exports, "POWR_SCHEMES", {
|
|
|
76
82
|
return _theme.POWR_SCHEMES;
|
|
77
83
|
}
|
|
78
84
|
});
|
|
85
|
+
Object.defineProperty(exports, "POWR_SESSION_STORAGE_KEY", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
get: function get() {
|
|
88
|
+
return _session.POWR_SESSION_STORAGE_KEY;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
Object.defineProperty(exports, "POWR_SHELL_MODES", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
get: function get() {
|
|
94
|
+
return _shell.POWR_SHELL_MODES;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
79
97
|
Object.defineProperty(exports, "POWR_TOKENS", {
|
|
80
98
|
enumerable: true,
|
|
81
99
|
get: function get() {
|
|
@@ -112,6 +130,12 @@ Object.defineProperty(exports, "PowrBaseAdmin", {
|
|
|
112
130
|
return _PowrBaseAdminFull["default"];
|
|
113
131
|
}
|
|
114
132
|
});
|
|
133
|
+
Object.defineProperty(exports, "PowrBaseAppWrapper", {
|
|
134
|
+
enumerable: true,
|
|
135
|
+
get: function get() {
|
|
136
|
+
return _shell.PowrBaseAppWrapper;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
115
139
|
Object.defineProperty(exports, "PowrBaseBlogs", {
|
|
116
140
|
enumerable: true,
|
|
117
141
|
get: function get() {
|
|
@@ -226,6 +250,12 @@ Object.defineProperty(exports, "PowrOnboardingProvider", {
|
|
|
226
250
|
return _onboarding.PowrOnboardingProvider;
|
|
227
251
|
}
|
|
228
252
|
});
|
|
253
|
+
Object.defineProperty(exports, "PowrSessionProvider", {
|
|
254
|
+
enumerable: true,
|
|
255
|
+
get: function get() {
|
|
256
|
+
return _session.PowrSessionProvider;
|
|
257
|
+
}
|
|
258
|
+
});
|
|
229
259
|
Object.defineProperty(exports, "PowrTable", {
|
|
230
260
|
enumerable: true,
|
|
231
261
|
get: function get() {
|
|
@@ -238,12 +268,24 @@ Object.defineProperty(exports, "PowrThemeProvider", {
|
|
|
238
268
|
return _theme.PowrThemeProvider;
|
|
239
269
|
}
|
|
240
270
|
});
|
|
271
|
+
Object.defineProperty(exports, "PowrThemeSettings", {
|
|
272
|
+
enumerable: true,
|
|
273
|
+
get: function get() {
|
|
274
|
+
return _theme.PowrThemeSettings;
|
|
275
|
+
}
|
|
276
|
+
});
|
|
241
277
|
Object.defineProperty(exports, "SESSION_MESSAGES", {
|
|
242
278
|
enumerable: true,
|
|
243
279
|
get: function get() {
|
|
244
280
|
return _sessionMessages.SESSION_MESSAGES;
|
|
245
281
|
}
|
|
246
282
|
});
|
|
283
|
+
Object.defineProperty(exports, "accessFromToken", {
|
|
284
|
+
enumerable: true,
|
|
285
|
+
get: function get() {
|
|
286
|
+
return _session.accessFromToken;
|
|
287
|
+
}
|
|
288
|
+
});
|
|
247
289
|
Object.defineProperty(exports, "addPhoneStep", {
|
|
248
290
|
enumerable: true,
|
|
249
291
|
get: function get() {
|
|
@@ -262,6 +304,12 @@ Object.defineProperty(exports, "buildPowrSsoUrl", {
|
|
|
262
304
|
return _sso.buildPowrSsoUrl;
|
|
263
305
|
}
|
|
264
306
|
});
|
|
307
|
+
Object.defineProperty(exports, "clearStoredSession", {
|
|
308
|
+
enumerable: true,
|
|
309
|
+
get: function get() {
|
|
310
|
+
return _session.clearStoredSession;
|
|
311
|
+
}
|
|
312
|
+
});
|
|
265
313
|
Object.defineProperty(exports, "coercePhoneForStorage", {
|
|
266
314
|
enumerable: true,
|
|
267
315
|
get: function get() {
|
|
@@ -316,6 +364,12 @@ Object.defineProperty(exports, "getPhoneLookupVariants", {
|
|
|
316
364
|
return _phone.getPhoneLookupVariants;
|
|
317
365
|
}
|
|
318
366
|
});
|
|
367
|
+
Object.defineProperty(exports, "getPowrUserId", {
|
|
368
|
+
enumerable: true,
|
|
369
|
+
get: function get() {
|
|
370
|
+
return _session.getPowrUserId;
|
|
371
|
+
}
|
|
372
|
+
});
|
|
319
373
|
Object.defineProperty(exports, "getUserId", {
|
|
320
374
|
enumerable: true,
|
|
321
375
|
get: function get() {
|
|
@@ -340,6 +394,12 @@ Object.defineProperty(exports, "isJwtExpired", {
|
|
|
340
394
|
return _jwt.isJwtExpired;
|
|
341
395
|
}
|
|
342
396
|
});
|
|
397
|
+
Object.defineProperty(exports, "isPowrAdmin", {
|
|
398
|
+
enumerable: true,
|
|
399
|
+
get: function get() {
|
|
400
|
+
return _session.isPowrAdmin;
|
|
401
|
+
}
|
|
402
|
+
});
|
|
343
403
|
Object.defineProperty(exports, "isValidPhone", {
|
|
344
404
|
enumerable: true,
|
|
345
405
|
get: function get() {
|
|
@@ -424,6 +484,18 @@ Object.defineProperty(exports, "profileNameStep", {
|
|
|
424
484
|
return _onboarding.profileNameStep;
|
|
425
485
|
}
|
|
426
486
|
});
|
|
487
|
+
Object.defineProperty(exports, "readStoredSession", {
|
|
488
|
+
enumerable: true,
|
|
489
|
+
get: function get() {
|
|
490
|
+
return _session.readStoredSession;
|
|
491
|
+
}
|
|
492
|
+
});
|
|
493
|
+
Object.defineProperty(exports, "resolveAccess", {
|
|
494
|
+
enumerable: true,
|
|
495
|
+
get: function get() {
|
|
496
|
+
return _session.resolveAccess;
|
|
497
|
+
}
|
|
498
|
+
});
|
|
427
499
|
Object.defineProperty(exports, "resolveCountry", {
|
|
428
500
|
enumerable: true,
|
|
429
501
|
get: function get() {
|
|
@@ -448,12 +520,24 @@ Object.defineProperty(exports, "tokensToCssVars", {
|
|
|
448
520
|
return _theme.tokensToCssVars;
|
|
449
521
|
}
|
|
450
522
|
});
|
|
523
|
+
Object.defineProperty(exports, "usePowrSession", {
|
|
524
|
+
enumerable: true,
|
|
525
|
+
get: function get() {
|
|
526
|
+
return _session.usePowrSession;
|
|
527
|
+
}
|
|
528
|
+
});
|
|
451
529
|
Object.defineProperty(exports, "usePowrTheme", {
|
|
452
530
|
enumerable: true,
|
|
453
531
|
get: function get() {
|
|
454
532
|
return _theme.usePowrTheme;
|
|
455
533
|
}
|
|
456
534
|
});
|
|
535
|
+
Object.defineProperty(exports, "writeStoredSession", {
|
|
536
|
+
enumerable: true,
|
|
537
|
+
get: function get() {
|
|
538
|
+
return _session.writeStoredSession;
|
|
539
|
+
}
|
|
540
|
+
});
|
|
457
541
|
var _table = _interopRequireDefault(require("./table"));
|
|
458
542
|
var _swiper = _interopRequireDefault(require("./swiper"));
|
|
459
543
|
var _reviews = _interopRequireDefault(require("./reviews"));
|
|
@@ -481,5 +565,7 @@ var _phone = require("./utils/phone");
|
|
|
481
565
|
var _jwt = require("./utils/jwt");
|
|
482
566
|
var _sessionMessages = require("./utils/sessionMessages");
|
|
483
567
|
var _theme = require("./theme");
|
|
568
|
+
var _session = require("./session");
|
|
569
|
+
var _shell = require("./shell");
|
|
484
570
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
485
571
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.POWR_SESSION_STORAGE_KEY = exports.POWR_ADMIN_ACCESS = void 0;
|
|
7
|
+
exports.PowrSessionProvider = PowrSessionProvider;
|
|
8
|
+
exports.accessFromToken = accessFromToken;
|
|
9
|
+
exports.clearStoredSession = clearStoredSession;
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
exports.getPowrUserId = getPowrUserId;
|
|
12
|
+
exports.isPowrAdmin = isPowrAdmin;
|
|
13
|
+
exports.readStoredSession = readStoredSession;
|
|
14
|
+
exports.resolveAccess = resolveAccess;
|
|
15
|
+
exports.usePowrSession = usePowrSession;
|
|
16
|
+
exports.writeStoredSession = writeStoredSession;
|
|
17
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
18
|
+
var _jwt = require("../utils/jwt");
|
|
19
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
20
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
21
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
22
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
23
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
24
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
25
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
26
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
27
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
28
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
29
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
30
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
31
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
32
|
+
/**
|
|
33
|
+
* Powr session — the file every new app used to copy (`utils/store.ts`).
|
|
34
|
+
*
|
|
35
|
+
* Owns `localStorage['auth-store']` in the zustand-persist shape
|
|
36
|
+
* `{ state: { user, token }, version }` so:
|
|
37
|
+
* - `apiCall` (utils/auth.getAuthToken) keeps reading the bearer from it
|
|
38
|
+
* - apps that already run a zustand `auth-store` can pass `user`/`token`
|
|
39
|
+
* as props (controlled) and nothing moves.
|
|
40
|
+
*
|
|
41
|
+
* No zustand dependency. Plain React context.
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
var POWR_SESSION_STORAGE_KEY = exports.POWR_SESSION_STORAGE_KEY = "auth-store";
|
|
45
|
+
var POWR_ADMIN_ACCESS = exports.POWR_ADMIN_ACCESS = 100;
|
|
46
|
+
function accessFromToken(token) {
|
|
47
|
+
var _decodeJwtPayload;
|
|
48
|
+
var access = Number((_decodeJwtPayload = (0, _jwt.decodeJwtPayload)(token)) === null || _decodeJwtPayload === void 0 ? void 0 : _decodeJwtPayload.access);
|
|
49
|
+
return Number.isFinite(access) ? access : undefined;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** `user.access` wins; falls back to the JWT claim; 0 when neither. */
|
|
53
|
+
function resolveAccess(user, token) {
|
|
54
|
+
var _accessFromToken;
|
|
55
|
+
var fromUser = Number(user === null || user === void 0 ? void 0 : user.access);
|
|
56
|
+
if (Number.isFinite(fromUser)) return fromUser;
|
|
57
|
+
return (_accessFromToken = accessFromToken(token)) !== null && _accessFromToken !== void 0 ? _accessFromToken : 0;
|
|
58
|
+
}
|
|
59
|
+
function isPowrAdmin(user, token) {
|
|
60
|
+
return resolveAccess(user, token) === POWR_ADMIN_ACCESS;
|
|
61
|
+
}
|
|
62
|
+
function getPowrUserId(user) {
|
|
63
|
+
return String((user === null || user === void 0 ? void 0 : user.powrId) || (user === null || user === void 0 ? void 0 : user._id) || (user === null || user === void 0 ? void 0 : user.userId) || "");
|
|
64
|
+
}
|
|
65
|
+
function readStoredSession() {
|
|
66
|
+
if (typeof window === "undefined") return null;
|
|
67
|
+
try {
|
|
68
|
+
var raw = window.localStorage.getItem(POWR_SESSION_STORAGE_KEY);
|
|
69
|
+
if (!raw) return null;
|
|
70
|
+
var parsed = JSON.parse(raw);
|
|
71
|
+
var state = (parsed === null || parsed === void 0 ? void 0 : parsed.state) || parsed || {};
|
|
72
|
+
return {
|
|
73
|
+
user: state.user || null,
|
|
74
|
+
token: state.token || null,
|
|
75
|
+
refreshToken: state.refreshToken || null
|
|
76
|
+
};
|
|
77
|
+
} catch (_unused) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function writeStoredSession(_ref) {
|
|
82
|
+
var user = _ref.user,
|
|
83
|
+
token = _ref.token,
|
|
84
|
+
refreshToken = _ref.refreshToken;
|
|
85
|
+
if (typeof window === "undefined") return;
|
|
86
|
+
window.localStorage.setItem(POWR_SESSION_STORAGE_KEY, JSON.stringify({
|
|
87
|
+
state: {
|
|
88
|
+
user: user,
|
|
89
|
+
token: token,
|
|
90
|
+
refreshToken: refreshToken
|
|
91
|
+
},
|
|
92
|
+
version: 0
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
function clearStoredSession() {
|
|
96
|
+
if (typeof window === "undefined") return;
|
|
97
|
+
window.localStorage.removeItem(POWR_SESSION_STORAGE_KEY);
|
|
98
|
+
}
|
|
99
|
+
var EMPTY = {
|
|
100
|
+
user: null,
|
|
101
|
+
token: null,
|
|
102
|
+
refreshToken: null
|
|
103
|
+
};
|
|
104
|
+
var PowrSessionContext = /*#__PURE__*/(0, _react.createContext)(_objectSpread(_objectSpread({}, EMPTY), {}, {
|
|
105
|
+
hydrated: false,
|
|
106
|
+
access: 0,
|
|
107
|
+
isPowrAdmin: false,
|
|
108
|
+
userId: "",
|
|
109
|
+
controlled: false,
|
|
110
|
+
setSession: function setSession() {},
|
|
111
|
+
clear: function clear() {}
|
|
112
|
+
}));
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @param {object} props
|
|
116
|
+
* @param {object|null} [props.user] - Controlled mode: app's own store is truth.
|
|
117
|
+
* @param {string|null} [props.token] - Controlled mode.
|
|
118
|
+
* @param {string|null} [props.refreshToken]
|
|
119
|
+
* @param {(session: {user, token, refreshToken}) => void} [props.onChange] - After setSession / clear.
|
|
120
|
+
* @param {() => void} [props.onLogout] - Controlled mode: clear your store here.
|
|
121
|
+
* @param {boolean} [props.persist=true] - Uncontrolled mode: write `auth-store`.
|
|
122
|
+
*/
|
|
123
|
+
function PowrSessionProvider(_ref2) {
|
|
124
|
+
var userProp = _ref2.user,
|
|
125
|
+
tokenProp = _ref2.token,
|
|
126
|
+
refreshTokenProp = _ref2.refreshToken,
|
|
127
|
+
onChange = _ref2.onChange,
|
|
128
|
+
onLogout = _ref2.onLogout,
|
|
129
|
+
_ref2$persist = _ref2.persist,
|
|
130
|
+
persist = _ref2$persist === void 0 ? true : _ref2$persist,
|
|
131
|
+
children = _ref2.children;
|
|
132
|
+
var controlled = userProp !== undefined || tokenProp !== undefined;
|
|
133
|
+
var _useState = (0, _react.useState)(EMPTY),
|
|
134
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
135
|
+
local = _useState2[0],
|
|
136
|
+
setLocal = _useState2[1];
|
|
137
|
+
var _useState3 = (0, _react.useState)(controlled),
|
|
138
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
139
|
+
hydrated = _useState4[0],
|
|
140
|
+
setHydrated = _useState4[1];
|
|
141
|
+
var onChangeRef = (0, _react.useRef)(onChange);
|
|
142
|
+
onChangeRef.current = onChange;
|
|
143
|
+
(0, _react.useEffect)(function () {
|
|
144
|
+
if (controlled) return;
|
|
145
|
+
var stored = readStoredSession();
|
|
146
|
+
if (stored !== null && stored !== void 0 && stored.token && !(0, _jwt.isJwtExpired)(stored.token)) {
|
|
147
|
+
setLocal({
|
|
148
|
+
user: stored.user,
|
|
149
|
+
token: stored.token,
|
|
150
|
+
refreshToken: stored.refreshToken
|
|
151
|
+
});
|
|
152
|
+
} else if (stored) {
|
|
153
|
+
clearStoredSession();
|
|
154
|
+
}
|
|
155
|
+
setHydrated(true);
|
|
156
|
+
}, [controlled]);
|
|
157
|
+
|
|
158
|
+
// Follow other tabs (and legacy zustand stores in the same origin).
|
|
159
|
+
(0, _react.useEffect)(function () {
|
|
160
|
+
if (controlled || typeof window === "undefined") return undefined;
|
|
161
|
+
var onStorage = function onStorage(e) {
|
|
162
|
+
if (e.key && e.key !== POWR_SESSION_STORAGE_KEY) return;
|
|
163
|
+
setLocal(readStoredSession() || EMPTY);
|
|
164
|
+
};
|
|
165
|
+
window.addEventListener("storage", onStorage);
|
|
166
|
+
return function () {
|
|
167
|
+
return window.removeEventListener("storage", onStorage);
|
|
168
|
+
};
|
|
169
|
+
}, [controlled]);
|
|
170
|
+
var setSession = (0, _react.useCallback)(function (user, token) {
|
|
171
|
+
var _onChangeRef$current;
|
|
172
|
+
var refreshToken = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
173
|
+
var next = {
|
|
174
|
+
user: user || null,
|
|
175
|
+
token: token || null,
|
|
176
|
+
refreshToken: refreshToken
|
|
177
|
+
};
|
|
178
|
+
if (!controlled) {
|
|
179
|
+
setLocal(next);
|
|
180
|
+
if (persist) writeStoredSession(next);
|
|
181
|
+
}
|
|
182
|
+
(_onChangeRef$current = onChangeRef.current) === null || _onChangeRef$current === void 0 || _onChangeRef$current.call(onChangeRef, next);
|
|
183
|
+
}, [controlled, persist]);
|
|
184
|
+
var clear = (0, _react.useCallback)(function () {
|
|
185
|
+
var _onChangeRef$current2;
|
|
186
|
+
if (!controlled) {
|
|
187
|
+
setLocal(EMPTY);
|
|
188
|
+
clearStoredSession();
|
|
189
|
+
}
|
|
190
|
+
onLogout === null || onLogout === void 0 || onLogout();
|
|
191
|
+
(_onChangeRef$current2 = onChangeRef.current) === null || _onChangeRef$current2 === void 0 || _onChangeRef$current2.call(onChangeRef, EMPTY);
|
|
192
|
+
}, [controlled, onLogout]);
|
|
193
|
+
var current = controlled ? {
|
|
194
|
+
user: userProp || null,
|
|
195
|
+
token: tokenProp || null,
|
|
196
|
+
refreshToken: refreshTokenProp || null
|
|
197
|
+
} : local;
|
|
198
|
+
var value = (0, _react.useMemo)(function () {
|
|
199
|
+
var access = resolveAccess(current.user, current.token);
|
|
200
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
201
|
+
hydrated: hydrated,
|
|
202
|
+
access: access,
|
|
203
|
+
isPowrAdmin: access === POWR_ADMIN_ACCESS,
|
|
204
|
+
userId: getPowrUserId(current.user),
|
|
205
|
+
controlled: controlled,
|
|
206
|
+
setSession: setSession,
|
|
207
|
+
clear: clear
|
|
208
|
+
});
|
|
209
|
+
}, [current.user, current.token, current.refreshToken, hydrated, controlled, setSession, clear]);
|
|
210
|
+
return /*#__PURE__*/_react["default"].createElement(PowrSessionContext.Provider, {
|
|
211
|
+
value: value
|
|
212
|
+
}, children);
|
|
213
|
+
}
|
|
214
|
+
function usePowrSession() {
|
|
215
|
+
return (0, _react.useContext)(PowrSessionContext);
|
|
216
|
+
}
|
|
217
|
+
var _default = exports["default"] = PowrSessionProvider;
|