powr-sdk-web 5.6.13 → 5.7.1
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 +141 -41
- package/dist/index.js +79 -0
- package/dist/onboarding/AddPhonePanel.js +504 -0
- package/dist/onboarding/OnboardingShell.js +78 -0
- package/dist/onboarding/PowrOnboardingProvider.js +216 -0
- package/dist/onboarding/index.js +102 -0
- package/dist/onboarding/steps/addPhoneStep.js +40 -0
- package/dist/onboarding/steps/profileNameStep.js +200 -0
- package/dist/onboarding/utils.js +213 -0
- package/dist/users/admin.js +162 -25
- package/package.json +1 -1
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.defineAppStep = defineAppStep;
|
|
7
|
+
exports.defineOptionalAppStep = defineOptionalAppStep;
|
|
8
|
+
exports.evaluateSteps = evaluateSteps;
|
|
9
|
+
exports.getUserId = getUserId;
|
|
10
|
+
exports.hasValidPhone = hasValidPhone;
|
|
11
|
+
exports.mergePowrSteps = mergePowrSteps;
|
|
12
|
+
exports.needsOnboarding = needsOnboarding;
|
|
13
|
+
exports.needsPhone = needsPhone;
|
|
14
|
+
exports.needsProfileName = needsProfileName;
|
|
15
|
+
exports.updatePowrUser = updatePowrUser;
|
|
16
|
+
var _profileNameStep = require("./steps/profileNameStep");
|
|
17
|
+
var _addPhoneStep = require("./steps/addPhoneStep");
|
|
18
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
19
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
20
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
21
|
+
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); }
|
|
22
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
23
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
24
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
25
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
26
|
+
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; } }
|
|
27
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
28
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
29
|
+
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; }
|
|
30
|
+
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; }
|
|
31
|
+
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; }
|
|
32
|
+
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; }
|
|
33
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
34
|
+
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); }
|
|
35
|
+
function hasValidPhone(phone) {
|
|
36
|
+
if (!phone || typeof phone !== 'string') return false;
|
|
37
|
+
if (phone.includes('@')) return false;
|
|
38
|
+
var clean = phone.replace(/\D/g, '');
|
|
39
|
+
return clean.length >= 10 && clean.length <= 15;
|
|
40
|
+
}
|
|
41
|
+
function getUserId(user) {
|
|
42
|
+
if (!user) return null;
|
|
43
|
+
var id = user.powrId || user._id || user.id;
|
|
44
|
+
return id ? String(id) : null;
|
|
45
|
+
}
|
|
46
|
+
function needsPhone(user) {
|
|
47
|
+
return !hasValidPhone(user === null || user === void 0 ? void 0 : user.phoneNumber);
|
|
48
|
+
}
|
|
49
|
+
function needsProfileName(user) {
|
|
50
|
+
var _user$fullName;
|
|
51
|
+
return !(user !== null && user !== void 0 && (_user$fullName = user.fullName) !== null && _user$fullName !== void 0 && _user$fullName.trim());
|
|
52
|
+
}
|
|
53
|
+
function defineAppStep(config) {
|
|
54
|
+
return _objectSpread(_objectSpread({}, config), {}, {
|
|
55
|
+
layer: 'app'
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function defineOptionalAppStep(config) {
|
|
59
|
+
return _objectSpread(_objectSpread({}, config), {}, {
|
|
60
|
+
layer: 'app',
|
|
61
|
+
optional: true
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function mergePowrSteps() {
|
|
65
|
+
var appSteps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
66
|
+
var all = [_addPhoneStep.addPhoneStep, _profileNameStep.profileNameStep].concat(_toConsumableArray(appSteps || []));
|
|
67
|
+
return all.sort(function (a, b) {
|
|
68
|
+
return (a.order || 0) - (b.order || 0);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function evaluateSteps(_x, _x2) {
|
|
72
|
+
return _evaluateSteps.apply(this, arguments);
|
|
73
|
+
}
|
|
74
|
+
function _evaluateSteps() {
|
|
75
|
+
_evaluateSteps = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(steps, ctx) {
|
|
76
|
+
var sorted, pending, _iterator, _step, step, shouldRun, _t, _t2;
|
|
77
|
+
return _regenerator().w(function (_context) {
|
|
78
|
+
while (1) switch (_context.p = _context.n) {
|
|
79
|
+
case 0:
|
|
80
|
+
sorted = _toConsumableArray(steps || []).sort(function (a, b) {
|
|
81
|
+
return (a.order || 0) - (b.order || 0);
|
|
82
|
+
});
|
|
83
|
+
pending = [];
|
|
84
|
+
_iterator = _createForOfIteratorHelper(sorted);
|
|
85
|
+
_context.p = 1;
|
|
86
|
+
_iterator.s();
|
|
87
|
+
case 2:
|
|
88
|
+
if ((_step = _iterator.n()).done) {
|
|
89
|
+
_context.n = 7;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
step = _step.value;
|
|
93
|
+
_context.p = 3;
|
|
94
|
+
_context.n = 4;
|
|
95
|
+
return step.shouldRun(ctx);
|
|
96
|
+
case 4:
|
|
97
|
+
shouldRun = _context.v;
|
|
98
|
+
if (shouldRun) pending.push(step);
|
|
99
|
+
_context.n = 6;
|
|
100
|
+
break;
|
|
101
|
+
case 5:
|
|
102
|
+
_context.p = 5;
|
|
103
|
+
_t = _context.v;
|
|
104
|
+
console.error("[PowrOnboarding] step \"".concat(step.id, "\" shouldRun failed:"), _t);
|
|
105
|
+
case 6:
|
|
106
|
+
_context.n = 2;
|
|
107
|
+
break;
|
|
108
|
+
case 7:
|
|
109
|
+
_context.n = 9;
|
|
110
|
+
break;
|
|
111
|
+
case 8:
|
|
112
|
+
_context.p = 8;
|
|
113
|
+
_t2 = _context.v;
|
|
114
|
+
_iterator.e(_t2);
|
|
115
|
+
case 9:
|
|
116
|
+
_context.p = 9;
|
|
117
|
+
_iterator.f();
|
|
118
|
+
return _context.f(9);
|
|
119
|
+
case 10:
|
|
120
|
+
return _context.a(2, pending);
|
|
121
|
+
}
|
|
122
|
+
}, _callee, null, [[3, 5], [1, 8, 9, 10]]);
|
|
123
|
+
}));
|
|
124
|
+
return _evaluateSteps.apply(this, arguments);
|
|
125
|
+
}
|
|
126
|
+
function needsOnboarding(_x3) {
|
|
127
|
+
return _needsOnboarding.apply(this, arguments);
|
|
128
|
+
}
|
|
129
|
+
function _needsOnboarding() {
|
|
130
|
+
_needsOnboarding = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(user) {
|
|
131
|
+
var _pending$0$id, _pending$;
|
|
132
|
+
var appSteps,
|
|
133
|
+
ctxExtras,
|
|
134
|
+
ctx,
|
|
135
|
+
pending,
|
|
136
|
+
_args2 = arguments;
|
|
137
|
+
return _regenerator().w(function (_context2) {
|
|
138
|
+
while (1) switch (_context2.n) {
|
|
139
|
+
case 0:
|
|
140
|
+
appSteps = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : [];
|
|
141
|
+
ctxExtras = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};
|
|
142
|
+
if (user) {
|
|
143
|
+
_context2.n = 1;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
return _context2.a(2, {
|
|
147
|
+
required: false,
|
|
148
|
+
steps: [],
|
|
149
|
+
nextStep: null,
|
|
150
|
+
pending: [],
|
|
151
|
+
details: {}
|
|
152
|
+
});
|
|
153
|
+
case 1:
|
|
154
|
+
ctx = _objectSpread({
|
|
155
|
+
user: user
|
|
156
|
+
}, ctxExtras);
|
|
157
|
+
_context2.n = 2;
|
|
158
|
+
return evaluateSteps(mergePowrSteps(appSteps), ctx);
|
|
159
|
+
case 2:
|
|
160
|
+
pending = _context2.v;
|
|
161
|
+
return _context2.a(2, {
|
|
162
|
+
required: pending.some(function (step) {
|
|
163
|
+
return !step.optional;
|
|
164
|
+
}),
|
|
165
|
+
steps: pending.map(function (step) {
|
|
166
|
+
return step.id;
|
|
167
|
+
}),
|
|
168
|
+
nextStep: (_pending$0$id = (_pending$ = pending[0]) === null || _pending$ === void 0 ? void 0 : _pending$.id) !== null && _pending$0$id !== void 0 ? _pending$0$id : null,
|
|
169
|
+
pending: pending
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}, _callee2);
|
|
173
|
+
}));
|
|
174
|
+
return _needsOnboarding.apply(this, arguments);
|
|
175
|
+
}
|
|
176
|
+
function updatePowrUser(_x4) {
|
|
177
|
+
return _updatePowrUser.apply(this, arguments);
|
|
178
|
+
}
|
|
179
|
+
function _updatePowrUser() {
|
|
180
|
+
_updatePowrUser = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(_ref) {
|
|
181
|
+
var apiUrl, projectId, userId, token, body, separator, url, response, data;
|
|
182
|
+
return _regenerator().w(function (_context3) {
|
|
183
|
+
while (1) switch (_context3.n) {
|
|
184
|
+
case 0:
|
|
185
|
+
apiUrl = _ref.apiUrl, projectId = _ref.projectId, userId = _ref.userId, token = _ref.token, body = _ref.body;
|
|
186
|
+
separator = '?';
|
|
187
|
+
url = "".concat(apiUrl, "/users/").concat(userId).concat(separator, "projectId=").concat(projectId);
|
|
188
|
+
_context3.n = 1;
|
|
189
|
+
return fetch(url, {
|
|
190
|
+
method: 'PUT',
|
|
191
|
+
headers: {
|
|
192
|
+
'Content-Type': 'application/json',
|
|
193
|
+
Authorization: "Bearer ".concat(token)
|
|
194
|
+
},
|
|
195
|
+
body: JSON.stringify(body)
|
|
196
|
+
});
|
|
197
|
+
case 1:
|
|
198
|
+
response = _context3.v;
|
|
199
|
+
_context3.n = 2;
|
|
200
|
+
return response.json()["catch"](function () {
|
|
201
|
+
return {};
|
|
202
|
+
});
|
|
203
|
+
case 2:
|
|
204
|
+
data = _context3.v;
|
|
205
|
+
return _context3.a(2, {
|
|
206
|
+
ok: response.ok,
|
|
207
|
+
data: data
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}, _callee3);
|
|
211
|
+
}));
|
|
212
|
+
return _updatePowrUser.apply(this, arguments);
|
|
213
|
+
}
|
package/dist/users/admin.js
CHANGED
|
@@ -7,7 +7,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports["default"] = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _auth = require("../utils/auth");
|
|
10
|
-
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
|
|
10
|
+
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 _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
|
|
11
|
+
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; }
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
15
|
+
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); }
|
|
11
16
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
12
17
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
13
18
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
@@ -18,17 +23,36 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
18
23
|
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; }
|
|
19
24
|
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; } }
|
|
20
25
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
26
|
+
var ROLE_OPTIONS = [{
|
|
27
|
+
value: 1,
|
|
28
|
+
label: 'Student'
|
|
29
|
+
}, {
|
|
30
|
+
value: 300,
|
|
31
|
+
label: 'College admin'
|
|
32
|
+
}, {
|
|
33
|
+
value: 900,
|
|
34
|
+
label: 'Client'
|
|
35
|
+
}, {
|
|
36
|
+
value: 100,
|
|
37
|
+
label: 'Admin'
|
|
38
|
+
}];
|
|
39
|
+
var normalizeAccess = function normalizeAccess(access) {
|
|
40
|
+
if (access === 100 || access === 300 || access === 900) return access;
|
|
41
|
+
return 1;
|
|
42
|
+
};
|
|
21
43
|
var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
22
44
|
var apiUrl = _ref.apiUrl,
|
|
23
45
|
projectId = _ref.projectId,
|
|
24
46
|
_ref$theme = _ref.theme,
|
|
25
|
-
theme = _ref$theme === void 0 ?
|
|
47
|
+
theme = _ref$theme === void 0 ? 'blue' : _ref$theme,
|
|
26
48
|
_ref$onUserClick = _ref.onUserClick,
|
|
27
49
|
onUserClick = _ref$onUserClick === void 0 ? null : _ref$onUserClick,
|
|
28
50
|
_ref$showActions = _ref.showActions,
|
|
29
51
|
showActions = _ref$showActions === void 0 ? true : _ref$showActions,
|
|
30
52
|
_ref$onAddUser = _ref.onAddUser,
|
|
31
|
-
onAddUser = _ref$onAddUser === void 0 ? null : _ref$onAddUser
|
|
53
|
+
onAddUser = _ref$onAddUser === void 0 ? null : _ref$onAddUser,
|
|
54
|
+
_ref$onRoleChange = _ref.onRoleChange,
|
|
55
|
+
onRoleChange = _ref$onRoleChange === void 0 ? null : _ref$onRoleChange;
|
|
32
56
|
var _useState = (0, _react.useState)([]),
|
|
33
57
|
_useState2 = _slicedToArray(_useState, 2),
|
|
34
58
|
users = _useState2[0],
|
|
@@ -41,9 +65,23 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
41
65
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
42
66
|
error = _useState6[0],
|
|
43
67
|
setError = _useState6[1];
|
|
68
|
+
var _useState7 = (0, _react.useState)(''),
|
|
69
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
70
|
+
feedback = _useState8[0],
|
|
71
|
+
setFeedback = _useState8[1];
|
|
72
|
+
var _useState9 = (0, _react.useState)(null),
|
|
73
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
74
|
+
updatingUserId = _useState0[0],
|
|
75
|
+
setUpdatingUserId = _useState0[1];
|
|
44
76
|
(0, _react.useEffect)(function () {
|
|
45
77
|
fetchUsers();
|
|
46
78
|
}, [projectId]);
|
|
79
|
+
var getUserId = function getUserId(user) {
|
|
80
|
+
if (!user) return null;
|
|
81
|
+
if (user.userId) return String(user.userId);
|
|
82
|
+
if (user._id) return String(user._id);
|
|
83
|
+
return null;
|
|
84
|
+
};
|
|
47
85
|
var fetchUsers = /*#__PURE__*/function () {
|
|
48
86
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
49
87
|
var _yield$apiCall, data, ok, _t;
|
|
@@ -52,6 +90,7 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
52
90
|
case 0:
|
|
53
91
|
_context.p = 0;
|
|
54
92
|
setLoading(true);
|
|
93
|
+
setError(null);
|
|
55
94
|
_context.n = 1;
|
|
56
95
|
return (0, _auth.apiCall)(apiUrl, "/profiles", projectId);
|
|
57
96
|
case 1:
|
|
@@ -89,16 +128,97 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
89
128
|
};
|
|
90
129
|
}();
|
|
91
130
|
var getBadgeVariant = function getBadgeVariant(access) {
|
|
92
|
-
if (access === 100) return
|
|
93
|
-
if (access ===
|
|
94
|
-
return
|
|
131
|
+
if (access === 100) return 'bg-red-100 text-red-800';
|
|
132
|
+
if (access === 300) return 'bg-purple-100 text-purple-800';
|
|
133
|
+
if (access === 900) return 'bg-blue-100 text-blue-800';
|
|
134
|
+
return 'bg-gray-100 text-gray-800';
|
|
95
135
|
};
|
|
96
136
|
var getBadgeText = function getBadgeText(access) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
137
|
+
var option = ROLE_OPTIONS.find(function (role) {
|
|
138
|
+
return role.value === normalizeAccess(access);
|
|
139
|
+
});
|
|
140
|
+
return (option === null || option === void 0 ? void 0 : option.label) || 'Student';
|
|
100
141
|
};
|
|
142
|
+
var updateUserRole = /*#__PURE__*/function () {
|
|
143
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(user, newAccess) {
|
|
144
|
+
var userId, _yield$apiCall2, data, ok, message, _message, _t2;
|
|
145
|
+
return _regenerator().w(function (_context2) {
|
|
146
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
147
|
+
case 0:
|
|
148
|
+
userId = getUserId(user);
|
|
149
|
+
if (userId) {
|
|
150
|
+
_context2.n = 1;
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
setFeedback('Could not resolve user id');
|
|
154
|
+
return _context2.a(2);
|
|
155
|
+
case 1:
|
|
156
|
+
if (!(normalizeAccess(user.access) === newAccess)) {
|
|
157
|
+
_context2.n = 2;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
return _context2.a(2);
|
|
161
|
+
case 2:
|
|
162
|
+
setUpdatingUserId(userId);
|
|
163
|
+
setFeedback('');
|
|
164
|
+
_context2.p = 3;
|
|
165
|
+
_context2.n = 4;
|
|
166
|
+
return (0, _auth.apiCall)(apiUrl, "/users/".concat(userId), projectId, {
|
|
167
|
+
method: 'PUT',
|
|
168
|
+
body: {
|
|
169
|
+
access: newAccess
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
case 4:
|
|
173
|
+
_yield$apiCall2 = _context2.v;
|
|
174
|
+
data = _yield$apiCall2.data;
|
|
175
|
+
ok = _yield$apiCall2.ok;
|
|
176
|
+
if (ok) {
|
|
177
|
+
_context2.n = 5;
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
throw new Error(data.message || 'Failed to update role');
|
|
181
|
+
case 5:
|
|
182
|
+
setUsers(function (prev) {
|
|
183
|
+
return prev.map(function (item) {
|
|
184
|
+
return getUserId(item) === userId ? _objectSpread(_objectSpread({}, item), {}, {
|
|
185
|
+
access: newAccess
|
|
186
|
+
}) : item;
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
message = 'Role updated. User must log out and log back in.';
|
|
190
|
+
setFeedback(message);
|
|
191
|
+
if (onRoleChange) {
|
|
192
|
+
onRoleChange('success', message, user, newAccess);
|
|
193
|
+
}
|
|
194
|
+
_context2.n = 7;
|
|
195
|
+
break;
|
|
196
|
+
case 6:
|
|
197
|
+
_context2.p = 6;
|
|
198
|
+
_t2 = _context2.v;
|
|
199
|
+
_message = _t2.message || 'Failed to update role';
|
|
200
|
+
setFeedback(_message);
|
|
201
|
+
if (onRoleChange) {
|
|
202
|
+
onRoleChange('error', _message, user, newAccess);
|
|
203
|
+
}
|
|
204
|
+
case 7:
|
|
205
|
+
_context2.p = 7;
|
|
206
|
+
setUpdatingUserId(null);
|
|
207
|
+
setTimeout(function () {
|
|
208
|
+
return setFeedback('');
|
|
209
|
+
}, 4000);
|
|
210
|
+
return _context2.f(7);
|
|
211
|
+
case 8:
|
|
212
|
+
return _context2.a(2);
|
|
213
|
+
}
|
|
214
|
+
}, _callee2, null, [[3, 6, 7, 8]]);
|
|
215
|
+
}));
|
|
216
|
+
return function updateUserRole(_x, _x2) {
|
|
217
|
+
return _ref3.apply(this, arguments);
|
|
218
|
+
};
|
|
219
|
+
}();
|
|
101
220
|
var formatDate = function formatDate(dateString) {
|
|
221
|
+
if (!dateString) return '—';
|
|
102
222
|
return new Date(dateString).toLocaleDateString();
|
|
103
223
|
};
|
|
104
224
|
if (loading) {
|
|
@@ -119,12 +239,16 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
119
239
|
className: "bg-white rounded-lg shadow"
|
|
120
240
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
121
241
|
className: "px-6 py-4 border-b border-gray-200 flex justify-between items-center"
|
|
122
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("
|
|
242
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h2", {
|
|
243
|
+
className: "text-lg font-semibold text-gray-900"
|
|
244
|
+
}, "Users"), /*#__PURE__*/_react["default"].createElement("p", {
|
|
123
245
|
className: "mt-1 text-sm text-gray-500"
|
|
124
246
|
}, users.length, " user", users.length !== 1 ? 's' : '', " found")), showActions && onAddUser && /*#__PURE__*/_react["default"].createElement("button", {
|
|
125
247
|
onClick: onAddUser,
|
|
126
248
|
className: "bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-md text-sm font-medium"
|
|
127
|
-
}, "Add User")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
249
|
+
}, "Add User")), feedback && /*#__PURE__*/_react["default"].createElement("div", {
|
|
250
|
+
className: "mx-6 mt-4 rounded-lg border border-blue-200 bg-blue-50 px-4 py-3 text-sm text-blue-800"
|
|
251
|
+
}, feedback), /*#__PURE__*/_react["default"].createElement("div", {
|
|
128
252
|
className: "overflow-x-auto"
|
|
129
253
|
}, /*#__PURE__*/_react["default"].createElement("table", {
|
|
130
254
|
className: "min-w-full divide-y divide-gray-200"
|
|
@@ -136,15 +260,15 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
136
260
|
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
137
261
|
}, "Role"), /*#__PURE__*/_react["default"].createElement("th", {
|
|
138
262
|
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
139
|
-
}, "Joined"),
|
|
140
|
-
className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
|
|
141
|
-
}, "Actions"))), /*#__PURE__*/_react["default"].createElement("tbody", {
|
|
263
|
+
}, "Joined"))), /*#__PURE__*/_react["default"].createElement("tbody", {
|
|
142
264
|
className: "bg-white divide-y divide-gray-200"
|
|
143
265
|
}, users.map(function (user) {
|
|
144
266
|
var _user$fullName;
|
|
267
|
+
var userId = getUserId(user);
|
|
268
|
+
var isUpdating = updatingUserId === userId;
|
|
145
269
|
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
146
|
-
key: user._id,
|
|
147
|
-
className: onUserClick ?
|
|
270
|
+
key: userId || user._id,
|
|
271
|
+
className: onUserClick ? 'cursor-pointer hover:bg-gray-50' : '',
|
|
148
272
|
onClick: function onClick() {
|
|
149
273
|
return onUserClick && onUserClick(user);
|
|
150
274
|
}
|
|
@@ -165,18 +289,31 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
165
289
|
}, user.fullName || 'Unknown User'), /*#__PURE__*/_react["default"].createElement("div", {
|
|
166
290
|
className: "text-sm text-gray-500"
|
|
167
291
|
}, user.email || user.phoneNumber || 'No contact info')))), /*#__PURE__*/_react["default"].createElement("td", {
|
|
168
|
-
className: "px-6 py-4 whitespace-nowrap"
|
|
169
|
-
|
|
292
|
+
className: "px-6 py-4 whitespace-nowrap",
|
|
293
|
+
onClick: function onClick(e) {
|
|
294
|
+
return e.stopPropagation();
|
|
295
|
+
}
|
|
296
|
+
}, showActions ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
297
|
+
className: "flex items-center gap-2"
|
|
298
|
+
}, /*#__PURE__*/_react["default"].createElement("select", {
|
|
299
|
+
value: normalizeAccess(user.access),
|
|
300
|
+
disabled: isUpdating,
|
|
301
|
+
onChange: function onChange(e) {
|
|
302
|
+
return updateUserRole(user, Number(e.target.value));
|
|
303
|
+
},
|
|
304
|
+
className: "text-sm border border-gray-300 rounded-md px-2 py-1.5 bg-white focus:outline-none focus:ring-2 focus:ring-blue-500 disabled:opacity-50"
|
|
305
|
+
}, ROLE_OPTIONS.map(function (role) {
|
|
306
|
+
return /*#__PURE__*/_react["default"].createElement("option", {
|
|
307
|
+
key: role.value,
|
|
308
|
+
value: role.value
|
|
309
|
+
}, role.label);
|
|
310
|
+
})), isUpdating && /*#__PURE__*/_react["default"].createElement("span", {
|
|
311
|
+
className: "text-xs text-gray-500"
|
|
312
|
+
}, "Saving...")) : /*#__PURE__*/_react["default"].createElement("span", {
|
|
170
313
|
className: "inline-flex px-2 py-1 text-xs font-semibold rounded-full ".concat(getBadgeVariant(user.access))
|
|
171
314
|
}, getBadgeText(user.access))), /*#__PURE__*/_react["default"].createElement("td", {
|
|
172
315
|
className: "px-6 py-4 whitespace-nowrap text-sm text-gray-500"
|
|
173
|
-
}, formatDate(user.createdAt))
|
|
174
|
-
className: "px-6 py-4 whitespace-nowrap text-sm font-medium"
|
|
175
|
-
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
176
|
-
className: "text-indigo-600 hover:text-indigo-900 mr-3"
|
|
177
|
-
}, "Edit"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
178
|
-
className: "text-red-600 hover:text-red-900"
|
|
179
|
-
}, "Remove")));
|
|
316
|
+
}, formatDate(user.createdAt)));
|
|
180
317
|
})))), users.length === 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
181
318
|
className: "text-center py-8"
|
|
182
319
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|