powr-sdk-web 6.15.1 → 6.17.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 +676 -190
- package/dist/components/PhoneInput.js +141 -25
- package/dist/onboarding/utils.js +3 -1
- package/dist/utils/phone.js +123 -1
- package/package.json +1 -1
package/dist/auth/index.js
CHANGED
|
@@ -10,6 +10,7 @@ var _firebase = require("../utils/firebase");
|
|
|
10
10
|
var _AddPhonePanel = _interopRequireDefault(require("../onboarding/AddPhonePanel"));
|
|
11
11
|
var _PhoneInput = _interopRequireDefault(require("../components/PhoneInput"));
|
|
12
12
|
var _utils = require("../onboarding/utils");
|
|
13
|
+
var _profileNameStep = require("../onboarding/steps/profileNameStep");
|
|
13
14
|
var _phone = require("../utils/phone");
|
|
14
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
15
16
|
var cache;
|
|
@@ -17,13 +18,13 @@ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e;
|
|
|
17
18
|
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); }
|
|
18
19
|
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
20
|
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); }
|
|
21
|
+
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); }
|
|
22
|
+
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); }); }; }
|
|
20
23
|
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; }
|
|
21
24
|
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; }
|
|
22
25
|
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; }
|
|
23
26
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
24
27
|
function _toPrimitive(t, e) { if ("object" != _typeof(t) || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
|
|
25
|
-
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); }
|
|
26
|
-
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); }); }; }
|
|
27
28
|
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
28
29
|
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."); }
|
|
29
30
|
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; } }
|
|
@@ -48,6 +49,12 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
48
49
|
passwordResetHelpUrl = _ref$passwordResetHel === void 0 ? null : _ref$passwordResetHel,
|
|
49
50
|
_ref$passwordResetHel2 = _ref.passwordResetHelpLabel,
|
|
50
51
|
passwordResetHelpLabel = _ref$passwordResetHel2 === void 0 ? 'Forgot password? WhatsApp us' : _ref$passwordResetHel2,
|
|
52
|
+
_ref$forgotPasswordCh = _ref.forgotPasswordChannel,
|
|
53
|
+
forgotPasswordChannel = _ref$forgotPasswordCh === void 0 ? null : _ref$forgotPasswordCh,
|
|
54
|
+
_ref$otpApp = _ref.otpApp,
|
|
55
|
+
otpApp = _ref$otpApp === void 0 ? null : _ref$otpApp,
|
|
56
|
+
_ref$otpReset = _ref.otpReset,
|
|
57
|
+
otpReset = _ref$otpReset === void 0 ? false : _ref$otpReset,
|
|
51
58
|
_ref$completeProfileO = _ref.completeProfileOnLogin,
|
|
52
59
|
completeProfileOnLogin = _ref$completeProfileO === void 0 ? false : _ref$completeProfileO,
|
|
53
60
|
_ref$requireTerms = _ref.requireTerms,
|
|
@@ -63,6 +70,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
63
70
|
onSessionExpired = _ref.onSessionExpired;
|
|
64
71
|
var projectId = projectIdProp || config.projectId;
|
|
65
72
|
var resolvedDefaultCountry = (0, _phone.resolveCountry)(defaultCountry, defaultCountryCode);
|
|
73
|
+
var resetChannel = forgotPasswordChannel || (otpReset ? 'otp' : 'whatsapp');
|
|
66
74
|
var _useState = (0, _react.useState)(function () {
|
|
67
75
|
switch (mode) {
|
|
68
76
|
case 'login':
|
|
@@ -122,55 +130,116 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
122
130
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
123
131
|
otpSent = _useState20[0],
|
|
124
132
|
setOtpSent = _useState20[1];
|
|
125
|
-
var _useState21 = (0, _react.useState)(
|
|
133
|
+
var _useState21 = (0, _react.useState)(null),
|
|
126
134
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
127
|
-
|
|
128
|
-
|
|
135
|
+
smsResetStep = _useState22[0],
|
|
136
|
+
setSmsResetStep = _useState22[1];
|
|
129
137
|
var _useState23 = (0, _react.useState)(''),
|
|
130
138
|
_useState24 = _slicedToArray(_useState23, 2),
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
var _useState25 = (0, _react.useState)(
|
|
139
|
+
smsOtp = _useState24[0],
|
|
140
|
+
setSmsOtp = _useState24[1];
|
|
141
|
+
var _useState25 = (0, _react.useState)(''),
|
|
134
142
|
_useState26 = _slicedToArray(_useState25, 2),
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
var _useState27 = (0, _react.useState)(
|
|
143
|
+
smsNewPassword = _useState26[0],
|
|
144
|
+
setSmsNewPassword = _useState26[1];
|
|
145
|
+
var _useState27 = (0, _react.useState)(''),
|
|
138
146
|
_useState28 = _slicedToArray(_useState27, 2),
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
var _useState29 = (0, _react.useState)(
|
|
147
|
+
smsConfirmPassword = _useState28[0],
|
|
148
|
+
setSmsConfirmPassword = _useState28[1];
|
|
149
|
+
var _useState29 = (0, _react.useState)(null),
|
|
142
150
|
_useState30 = _slicedToArray(_useState29, 2),
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
var _useState31 = (0, _react.useState)(
|
|
151
|
+
smsVerifyAuth = _useState30[0],
|
|
152
|
+
setSmsVerifyAuth = _useState30[1];
|
|
153
|
+
var _useState31 = (0, _react.useState)('phone'),
|
|
146
154
|
_useState32 = _slicedToArray(_useState31, 2),
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
var _useState33 = (0, _react.useState)(
|
|
155
|
+
loginGate = _useState32[0],
|
|
156
|
+
setLoginGate = _useState32[1];
|
|
157
|
+
var _useState33 = (0, _react.useState)(false),
|
|
150
158
|
_useState34 = _slicedToArray(_useState33, 2),
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
var _useState35 = (0, _react.useState)(
|
|
159
|
+
otpLoading = _useState34[0],
|
|
160
|
+
setOtpLoading = _useState34[1];
|
|
161
|
+
var _useState35 = (0, _react.useState)(''),
|
|
154
162
|
_useState36 = _slicedToArray(_useState35, 2),
|
|
155
|
-
|
|
156
|
-
|
|
163
|
+
otp = _useState36[0],
|
|
164
|
+
setOtp = _useState36[1];
|
|
157
165
|
var _useState37 = (0, _react.useState)(false),
|
|
158
166
|
_useState38 = _slicedToArray(_useState37, 2),
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
var _useState39 = (0, _react.useState)(
|
|
167
|
+
firebaseOtpSent = _useState38[0],
|
|
168
|
+
setFirebaseOtpSent = _useState38[1];
|
|
169
|
+
var _useState39 = (0, _react.useState)(null),
|
|
162
170
|
_useState40 = _slicedToArray(_useState39, 2),
|
|
163
|
-
|
|
164
|
-
|
|
171
|
+
firebaseConfirm = _useState40[0],
|
|
172
|
+
setFirebaseConfirm = _useState40[1];
|
|
165
173
|
var _useState41 = (0, _react.useState)(false),
|
|
166
174
|
_useState42 = _slicedToArray(_useState41, 2),
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
var _useState43 = (0, _react.useState)(
|
|
175
|
+
showOtpModal = _useState42[0],
|
|
176
|
+
setShowOtpModal = _useState42[1];
|
|
177
|
+
var _useState43 = (0, _react.useState)(false),
|
|
170
178
|
_useState44 = _slicedToArray(_useState43, 2),
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
var
|
|
179
|
+
isPhoneVerified = _useState44[0],
|
|
180
|
+
setIsPhoneVerified = _useState44[1];
|
|
181
|
+
var _useState45 = (0, _react.useState)('form'),
|
|
182
|
+
_useState46 = _slicedToArray(_useState45, 2),
|
|
183
|
+
authView = _useState46[0],
|
|
184
|
+
setAuthView = _useState46[1];
|
|
185
|
+
var _useState47 = (0, _react.useState)(null),
|
|
186
|
+
_useState48 = _slicedToArray(_useState47, 2),
|
|
187
|
+
pendingAuth = _useState48[0],
|
|
188
|
+
setPendingAuth = _useState48[1];
|
|
189
|
+
var _useState49 = (0, _react.useState)(false),
|
|
190
|
+
_useState50 = _slicedToArray(_useState49, 2),
|
|
191
|
+
termsAccepted = _useState50[0],
|
|
192
|
+
setTermsAccepted = _useState50[1];
|
|
193
|
+
var _useState51 = (0, _react.useState)(resolvedDefaultCountry),
|
|
194
|
+
_useState52 = _slicedToArray(_useState51, 2),
|
|
195
|
+
phoneCountry = _useState52[0],
|
|
196
|
+
setPhoneCountry = _useState52[1];
|
|
197
|
+
var _useState53 = (0, _react.useState)(false),
|
|
198
|
+
_useState54 = _slicedToArray(_useState53, 2),
|
|
199
|
+
registerPhoneValid = _useState54[0],
|
|
200
|
+
setRegisterPhoneValid = _useState54[1];
|
|
201
|
+
var _useState55 = (0, _react.useState)(''),
|
|
202
|
+
_useState56 = _slicedToArray(_useState55, 2),
|
|
203
|
+
registerPhoneE164 = _useState56[0],
|
|
204
|
+
setRegisterPhoneE164 = _useState56[1];
|
|
205
|
+
var shouldShowToggle = false;
|
|
206
|
+
var askForProfile = true;
|
|
207
|
+
var finishWithSession = function finishWithSession(data) {
|
|
208
|
+
if (!(data !== null && data !== void 0 && data.token)) return;
|
|
209
|
+
if (askForProfile && data.user && (0, _utils.needsPhone)(data.user)) {
|
|
210
|
+
setPendingAuth({
|
|
211
|
+
user: data.user,
|
|
212
|
+
token: data.token,
|
|
213
|
+
refreshToken: data.refreshToken,
|
|
214
|
+
onTokenRefreshed: function onTokenRefreshed(newToken) {
|
|
215
|
+
setPendingAuth(function (prev) {
|
|
216
|
+
return prev ? _objectSpread(_objectSpread({}, prev), {}, {
|
|
217
|
+
token: newToken
|
|
218
|
+
}) : prev;
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
setAuthView('add-phone');
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (askForProfile && data.user && (0, _utils.needsProfileName)(data.user)) {
|
|
226
|
+
setPendingAuth({
|
|
227
|
+
user: data.user,
|
|
228
|
+
token: data.token,
|
|
229
|
+
refreshToken: data.refreshToken,
|
|
230
|
+
onTokenRefreshed: function onTokenRefreshed(newToken) {
|
|
231
|
+
setPendingAuth(function (prev) {
|
|
232
|
+
return prev ? _objectSpread(_objectSpread({}, prev), {}, {
|
|
233
|
+
token: newToken
|
|
234
|
+
}) : prev;
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
setAuthView('add-name');
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
if (onLogin) onLogin(data);
|
|
242
|
+
};
|
|
174
243
|
var handleInputChange = /*#__PURE__*/function () {
|
|
175
244
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
|
|
176
245
|
var _e$target, name, value;
|
|
@@ -401,48 +470,144 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
401
470
|
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
402
471
|
return emailRegex.test(email);
|
|
403
472
|
};
|
|
473
|
+
var storedPhone = function storedPhone() {
|
|
474
|
+
return registerPhoneE164 || (0, _phone.coercePhoneForStorage)(formData.phoneOrEmail.trim(), phoneCountry) || (0, _phone.coercePhoneForStorage)(formData.phoneOrEmail.trim(), resolvedDefaultCountry) || (0, _phone.normalizePhone)(formData.phoneOrEmail.trim(), phoneCountry);
|
|
475
|
+
};
|
|
476
|
+
var isIndiaNumber = function isIndiaNumber() {
|
|
477
|
+
var e164 = storedPhone() || '';
|
|
478
|
+
return e164.startsWith('+91') || phoneCountry === 'IN';
|
|
479
|
+
};
|
|
480
|
+
var continuePhone = /*#__PURE__*/function () {
|
|
481
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
|
|
482
|
+
var phoneOrEmail, _yield$apiCall, data, ok, _t5;
|
|
483
|
+
return _regenerator().w(function (_context4) {
|
|
484
|
+
while (1) switch (_context4.p = _context4.n) {
|
|
485
|
+
case 0:
|
|
486
|
+
phoneOrEmail = storedPhone();
|
|
487
|
+
if (registerPhoneValid) {
|
|
488
|
+
_context4.n = 1;
|
|
489
|
+
break;
|
|
490
|
+
}
|
|
491
|
+
setFieldErrors({
|
|
492
|
+
phoneOrEmail: 'Enter a valid mobile number'
|
|
493
|
+
});
|
|
494
|
+
return _context4.a(2);
|
|
495
|
+
case 1:
|
|
496
|
+
setLoading(true);
|
|
497
|
+
setError('');
|
|
498
|
+
setSuccess('');
|
|
499
|
+
_context4.p = 2;
|
|
500
|
+
_context4.n = 3;
|
|
501
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/login-options', projectId, {
|
|
502
|
+
method: 'POST',
|
|
503
|
+
body: {
|
|
504
|
+
phoneOrEmail: phoneOrEmail,
|
|
505
|
+
mobile: smsMobile()
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
case 3:
|
|
509
|
+
_yield$apiCall = _context4.v;
|
|
510
|
+
data = _yield$apiCall.data;
|
|
511
|
+
ok = _yield$apiCall.ok;
|
|
512
|
+
if (!(ok && data.exists && data.hasPassword)) {
|
|
513
|
+
_context4.n = 4;
|
|
514
|
+
break;
|
|
515
|
+
}
|
|
516
|
+
setLoginGate('password');
|
|
517
|
+
setSuccess('');
|
|
518
|
+
return _context4.a(2);
|
|
519
|
+
case 4:
|
|
520
|
+
if (!(resetChannel === 'otp')) {
|
|
521
|
+
_context4.n = 8;
|
|
522
|
+
break;
|
|
523
|
+
}
|
|
524
|
+
if (isIndiaNumber()) {
|
|
525
|
+
_context4.n = 5;
|
|
526
|
+
break;
|
|
527
|
+
}
|
|
528
|
+
setLoginGate('password');
|
|
529
|
+
setError('SMS is for Indian numbers. Sign in with your password.');
|
|
530
|
+
return _context4.a(2);
|
|
531
|
+
case 5:
|
|
532
|
+
if (!ok) {
|
|
533
|
+
_context4.n = 7;
|
|
534
|
+
break;
|
|
535
|
+
}
|
|
536
|
+
setLoading(false);
|
|
537
|
+
_context4.n = 6;
|
|
538
|
+
return handleSmsForgotStart();
|
|
539
|
+
case 6:
|
|
540
|
+
return _context4.a(2);
|
|
541
|
+
case 7:
|
|
542
|
+
setLoginGate('password');
|
|
543
|
+
return _context4.a(2);
|
|
544
|
+
case 8:
|
|
545
|
+
if (!(ok && (!data.exists || !data.hasPassword))) {
|
|
546
|
+
_context4.n = 9;
|
|
547
|
+
break;
|
|
548
|
+
}
|
|
549
|
+
setLoginGate('help');
|
|
550
|
+
return _context4.a(2);
|
|
551
|
+
case 9:
|
|
552
|
+
setLoginGate('password');
|
|
553
|
+
_context4.n = 11;
|
|
554
|
+
break;
|
|
555
|
+
case 10:
|
|
556
|
+
_context4.p = 10;
|
|
557
|
+
_t5 = _context4.v;
|
|
558
|
+
setLoginGate('password');
|
|
559
|
+
case 11:
|
|
560
|
+
_context4.p = 11;
|
|
561
|
+
setLoading(false);
|
|
562
|
+
return _context4.f(11);
|
|
563
|
+
case 12:
|
|
564
|
+
return _context4.a(2);
|
|
565
|
+
}
|
|
566
|
+
}, _callee4, null, [[2, 10, 11, 12]]);
|
|
567
|
+
}));
|
|
568
|
+
return function continuePhone() {
|
|
569
|
+
return _ref6.apply(this, arguments);
|
|
570
|
+
};
|
|
571
|
+
}();
|
|
404
572
|
var handleSubmit = /*#__PURE__*/function () {
|
|
405
|
-
var
|
|
573
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(e) {
|
|
406
574
|
var skipPhoneValidation,
|
|
407
575
|
errors,
|
|
408
576
|
value,
|
|
409
|
-
isEmail,
|
|
410
577
|
endpoint,
|
|
411
578
|
normalizedPhone,
|
|
412
579
|
payload,
|
|
413
|
-
_yield$
|
|
580
|
+
_yield$apiCall2,
|
|
414
581
|
data,
|
|
415
582
|
ok,
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
583
|
+
_login$data,
|
|
584
|
+
login,
|
|
585
|
+
_args5 = arguments,
|
|
586
|
+
_t6;
|
|
587
|
+
return _regenerator().w(function (_context5) {
|
|
588
|
+
while (1) switch (_context5.p = _context5.n) {
|
|
420
589
|
case 0:
|
|
421
|
-
skipPhoneValidation =
|
|
590
|
+
skipPhoneValidation = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : false;
|
|
422
591
|
if (e) e.preventDefault();
|
|
423
|
-
setLoading(true);
|
|
424
592
|
setError('');
|
|
425
593
|
setSuccess('');
|
|
426
594
|
setFieldErrors({});
|
|
427
595
|
errors = {};
|
|
428
596
|
value = formData.phoneOrEmail.trim();
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
597
|
+
if (!(isLogin && loginGate === 'phone' && !smsResetStep)) {
|
|
598
|
+
_context5.n = 2;
|
|
599
|
+
break;
|
|
432
600
|
}
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
601
|
+
_context5.n = 1;
|
|
602
|
+
return continuePhone();
|
|
603
|
+
case 1:
|
|
604
|
+
return _context5.a(2);
|
|
605
|
+
case 2:
|
|
606
|
+
if (!formData.phoneOrEmail.trim()) {
|
|
607
|
+
errors.phoneOrEmail = 'Phone number is required';
|
|
437
608
|
}
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
if (isLogin) {
|
|
441
|
-
if (isEmail && !isValidEmail(value)) {
|
|
442
|
-
errors.phoneOrEmail = 'Please enter a valid email address';
|
|
443
|
-
} else if (!isEmail && !(0, _phone.coercePhoneForStorage)(value, resolvedDefaultCountry)) {
|
|
444
|
-
errors.phoneOrEmail = 'Please enter a valid phone number (include country code, e.g. +1…) or email';
|
|
445
|
-
}
|
|
609
|
+
if (!registerPhoneValid && !storedPhone()) {
|
|
610
|
+
errors.phoneOrEmail = 'Please enter a valid mobile number';
|
|
446
611
|
}
|
|
447
612
|
if (!formData.password.trim()) {
|
|
448
613
|
errors.password = 'Password is required';
|
|
@@ -462,72 +627,62 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
462
627
|
errors.terms = 'Please accept the terms to continue';
|
|
463
628
|
}
|
|
464
629
|
if (!(Object.keys(errors).length > 0)) {
|
|
465
|
-
|
|
630
|
+
_context5.n = 3;
|
|
466
631
|
break;
|
|
467
632
|
}
|
|
468
633
|
setFieldErrors(errors);
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
634
|
+
return _context5.a(2);
|
|
635
|
+
case 3:
|
|
636
|
+
setLoading(true);
|
|
637
|
+
_context5.p = 4;
|
|
473
638
|
endpoint = isLogin ? "/auth/login" : "/auth/register";
|
|
474
|
-
normalizedPhone =
|
|
639
|
+
normalizedPhone = storedPhone() || value;
|
|
475
640
|
payload = isLogin ? {
|
|
476
|
-
phoneOrEmail:
|
|
641
|
+
phoneOrEmail: normalizedPhone,
|
|
477
642
|
password: formData.password
|
|
478
643
|
} : {
|
|
479
644
|
fullName: formData.fullName,
|
|
480
645
|
phoneOrEmail: normalizedPhone,
|
|
481
646
|
password: formData.password
|
|
482
647
|
};
|
|
483
|
-
|
|
648
|
+
_context5.n = 5;
|
|
484
649
|
return (0, _auth.apiCall)(apiUrl, endpoint, projectId, {
|
|
485
650
|
method: 'POST',
|
|
486
651
|
body: payload
|
|
487
652
|
});
|
|
488
|
-
case
|
|
489
|
-
_yield$
|
|
490
|
-
data = _yield$
|
|
491
|
-
ok = _yield$
|
|
653
|
+
case 5:
|
|
654
|
+
_yield$apiCall2 = _context5.v;
|
|
655
|
+
data = _yield$apiCall2.data;
|
|
656
|
+
ok = _yield$apiCall2.ok;
|
|
492
657
|
if (!ok) {
|
|
493
|
-
|
|
658
|
+
_context5.n = 9;
|
|
494
659
|
break;
|
|
495
660
|
}
|
|
496
661
|
setSuccess(isLogin ? 'Login successful!' : 'Registration successful!');
|
|
497
662
|
if (!isLogin) {
|
|
498
|
-
|
|
499
|
-
break;
|
|
500
|
-
}
|
|
501
|
-
if (!(completeProfileOnLogin && (0, _utils.needsPhone)(data.user))) {
|
|
502
|
-
_context4.n = 3;
|
|
663
|
+
_context5.n = 6;
|
|
503
664
|
break;
|
|
504
665
|
}
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
666
|
+
finishWithSession(data);
|
|
667
|
+
_context5.n = 8;
|
|
668
|
+
break;
|
|
669
|
+
case 6:
|
|
670
|
+
_context5.n = 7;
|
|
671
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/login', projectId, {
|
|
672
|
+
method: 'POST',
|
|
673
|
+
body: {
|
|
674
|
+
phoneOrEmail: normalizedPhone,
|
|
675
|
+
password: formData.password
|
|
515
676
|
}
|
|
516
677
|
});
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
if (
|
|
522
|
-
onLogin(data);
|
|
523
|
-
}
|
|
524
|
-
_context4.n = 5;
|
|
525
|
-
break;
|
|
526
|
-
case 4:
|
|
527
|
-
if (!isLogin && onRegister) {
|
|
678
|
+
case 7:
|
|
679
|
+
login = _context5.v;
|
|
680
|
+
if (login.ok && (_login$data = login.data) !== null && _login$data !== void 0 && _login$data.token) {
|
|
681
|
+
if (onLogin) finishWithSession(login.data);else if (onRegister) onRegister(login.data);
|
|
682
|
+
} else if (onRegister) {
|
|
528
683
|
onRegister(data);
|
|
529
684
|
}
|
|
530
|
-
case
|
|
685
|
+
case 8:
|
|
531
686
|
setFormData({
|
|
532
687
|
phoneOrEmail: '',
|
|
533
688
|
password: '',
|
|
@@ -538,9 +693,9 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
538
693
|
setOtp('');
|
|
539
694
|
setFirebaseOtpSent(false);
|
|
540
695
|
setFirebaseConfirm(null);
|
|
541
|
-
|
|
696
|
+
_context5.n = 10;
|
|
542
697
|
break;
|
|
543
|
-
case
|
|
698
|
+
case 9:
|
|
544
699
|
if (data.message) {
|
|
545
700
|
setError(data.message);
|
|
546
701
|
} else if (data.error) {
|
|
@@ -554,24 +709,24 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
554
709
|
} else {
|
|
555
710
|
setError("".concat(isLogin ? 'Login' : 'Registration', " failed. Please try again."));
|
|
556
711
|
}
|
|
557
|
-
case
|
|
558
|
-
|
|
712
|
+
case 10:
|
|
713
|
+
_context5.n = 12;
|
|
559
714
|
break;
|
|
560
|
-
case
|
|
561
|
-
|
|
562
|
-
|
|
715
|
+
case 11:
|
|
716
|
+
_context5.p = 11;
|
|
717
|
+
_t6 = _context5.v;
|
|
563
718
|
setError('Network error. Please try again.');
|
|
564
|
-
case
|
|
565
|
-
|
|
719
|
+
case 12:
|
|
720
|
+
_context5.p = 12;
|
|
566
721
|
setLoading(false);
|
|
567
|
-
return
|
|
568
|
-
case
|
|
569
|
-
return
|
|
722
|
+
return _context5.f(12);
|
|
723
|
+
case 13:
|
|
724
|
+
return _context5.a(2);
|
|
570
725
|
}
|
|
571
|
-
},
|
|
726
|
+
}, _callee5, null, [[4, 11, 12, 13]]);
|
|
572
727
|
}));
|
|
573
728
|
return function handleSubmit(_x3) {
|
|
574
|
-
return
|
|
729
|
+
return _ref7.apply(this, arguments);
|
|
575
730
|
};
|
|
576
731
|
}();
|
|
577
732
|
var toggleMode = function toggleMode() {
|
|
@@ -631,26 +786,313 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
631
786
|
}
|
|
632
787
|
setError('Your session timed out. Sign in again to add your phone number.');
|
|
633
788
|
};
|
|
789
|
+
var smsMobile = function smsMobile() {
|
|
790
|
+
var digits = formData.phoneOrEmail.replace(/\D/g, '');
|
|
791
|
+
if (digits.length === 10) return digits;
|
|
792
|
+
if (digits.length === 12 && digits.startsWith('91')) return digits.slice(2);
|
|
793
|
+
if (digits.length === 11 && digits.startsWith('0')) return digits.slice(1);
|
|
794
|
+
return digits;
|
|
795
|
+
};
|
|
796
|
+
var hostOtp = /*#__PURE__*/function () {
|
|
797
|
+
var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(path, extra) {
|
|
798
|
+
var body, app, _yield$apiCall3, data, ok;
|
|
799
|
+
return _regenerator().w(function (_context6) {
|
|
800
|
+
while (1) switch (_context6.n) {
|
|
801
|
+
case 0:
|
|
802
|
+
body = _objectSpread({
|
|
803
|
+
mobile: smsMobile()
|
|
804
|
+
}, extra);
|
|
805
|
+
app = otpApp && String(otpApp).trim();
|
|
806
|
+
if (app) body.app = app;
|
|
807
|
+
_context6.n = 1;
|
|
808
|
+
return (0, _auth.apiCall)(apiUrl, path, projectId, {
|
|
809
|
+
method: 'POST',
|
|
810
|
+
body: body
|
|
811
|
+
});
|
|
812
|
+
case 1:
|
|
813
|
+
_yield$apiCall3 = _context6.v;
|
|
814
|
+
data = _yield$apiCall3.data;
|
|
815
|
+
ok = _yield$apiCall3.ok;
|
|
816
|
+
if (!(!ok || data.success === false)) {
|
|
817
|
+
_context6.n = 2;
|
|
818
|
+
break;
|
|
819
|
+
}
|
|
820
|
+
throw new Error(data.message || 'Could not complete the phone check');
|
|
821
|
+
case 2:
|
|
822
|
+
return _context6.a(2, data);
|
|
823
|
+
}
|
|
824
|
+
}, _callee6);
|
|
825
|
+
}));
|
|
826
|
+
return function hostOtp(_x4, _x5) {
|
|
827
|
+
return _ref8.apply(this, arguments);
|
|
828
|
+
};
|
|
829
|
+
}();
|
|
830
|
+
var handleSmsForgotStart = /*#__PURE__*/function () {
|
|
831
|
+
var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {
|
|
832
|
+
var _t7;
|
|
833
|
+
return _regenerator().w(function (_context7) {
|
|
834
|
+
while (1) switch (_context7.p = _context7.n) {
|
|
835
|
+
case 0:
|
|
836
|
+
if (!(resetChannel !== 'otp')) {
|
|
837
|
+
_context7.n = 1;
|
|
838
|
+
break;
|
|
839
|
+
}
|
|
840
|
+
return _context7.a(2);
|
|
841
|
+
case 1:
|
|
842
|
+
if (!(!isIndiaNumber() || smsMobile().length !== 10)) {
|
|
843
|
+
_context7.n = 2;
|
|
844
|
+
break;
|
|
845
|
+
}
|
|
846
|
+
setFieldErrors({
|
|
847
|
+
phoneOrEmail: 'SMS is for a 10-digit Indian mobile'
|
|
848
|
+
});
|
|
849
|
+
return _context7.a(2);
|
|
850
|
+
case 2:
|
|
851
|
+
setSmsOtp('');
|
|
852
|
+
setSmsResetStep('otp');
|
|
853
|
+
setOtpLoading(true);
|
|
854
|
+
setError('');
|
|
855
|
+
setSuccess('Sending a code…');
|
|
856
|
+
_context7.p = 3;
|
|
857
|
+
_context7.n = 4;
|
|
858
|
+
return hostOtp('/auth/send-otp');
|
|
859
|
+
case 4:
|
|
860
|
+
setSuccess('Code sent. Enter the 5-digit SMS.');
|
|
861
|
+
_context7.n = 6;
|
|
862
|
+
break;
|
|
863
|
+
case 5:
|
|
864
|
+
_context7.p = 5;
|
|
865
|
+
_t7 = _context7.v;
|
|
866
|
+
setSmsResetStep(null);
|
|
867
|
+
setSuccess('');
|
|
868
|
+
setError(_t7.message || 'Could not send the code.');
|
|
869
|
+
case 6:
|
|
870
|
+
_context7.p = 6;
|
|
871
|
+
setOtpLoading(false);
|
|
872
|
+
return _context7.f(6);
|
|
873
|
+
case 7:
|
|
874
|
+
return _context7.a(2);
|
|
875
|
+
}
|
|
876
|
+
}, _callee7, null, [[3, 5, 6, 7]]);
|
|
877
|
+
}));
|
|
878
|
+
return function handleSmsForgotStart() {
|
|
879
|
+
return _ref9.apply(this, arguments);
|
|
880
|
+
};
|
|
881
|
+
}();
|
|
882
|
+
var handleSmsVerify = /*#__PURE__*/function () {
|
|
883
|
+
var _ref0 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8() {
|
|
884
|
+
var code, data, _t8;
|
|
885
|
+
return _regenerator().w(function (_context8) {
|
|
886
|
+
while (1) switch (_context8.p = _context8.n) {
|
|
887
|
+
case 0:
|
|
888
|
+
code = smsOtp.replace(/\D/g, '').slice(0, 5);
|
|
889
|
+
if (!(code.length !== 5)) {
|
|
890
|
+
_context8.n = 1;
|
|
891
|
+
break;
|
|
892
|
+
}
|
|
893
|
+
setError('Enter the 5-digit code.');
|
|
894
|
+
return _context8.a(2);
|
|
895
|
+
case 1:
|
|
896
|
+
setOtpLoading(true);
|
|
897
|
+
setError('');
|
|
898
|
+
_context8.p = 2;
|
|
899
|
+
_context8.n = 3;
|
|
900
|
+
return hostOtp('/auth/verify-otp', {
|
|
901
|
+
otp: code
|
|
902
|
+
});
|
|
903
|
+
case 3:
|
|
904
|
+
data = _context8.v;
|
|
905
|
+
setSmsVerifyAuth(data);
|
|
906
|
+
setSmsNewPassword('');
|
|
907
|
+
setSmsConfirmPassword('');
|
|
908
|
+
setSmsResetStep('password');
|
|
909
|
+
setSuccess(data.user ? 'Phone confirmed. Set a new password.' : 'Create a password. Next time you sign in with this number and password.');
|
|
910
|
+
_context8.n = 5;
|
|
911
|
+
break;
|
|
912
|
+
case 4:
|
|
913
|
+
_context8.p = 4;
|
|
914
|
+
_t8 = _context8.v;
|
|
915
|
+
setError(_t8.message || 'Could not verify the code.');
|
|
916
|
+
case 5:
|
|
917
|
+
_context8.p = 5;
|
|
918
|
+
setOtpLoading(false);
|
|
919
|
+
return _context8.f(5);
|
|
920
|
+
case 6:
|
|
921
|
+
return _context8.a(2);
|
|
922
|
+
}
|
|
923
|
+
}, _callee8, null, [[2, 4, 5, 6]]);
|
|
924
|
+
}));
|
|
925
|
+
return function handleSmsVerify() {
|
|
926
|
+
return _ref0.apply(this, arguments);
|
|
927
|
+
};
|
|
928
|
+
}();
|
|
929
|
+
var handleSmsSavePassword = /*#__PURE__*/function () {
|
|
930
|
+
var _ref1 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() {
|
|
931
|
+
var phoneOrEmail, resetExisting, registered, _registered$data, msg, login, _login$data2, _t9;
|
|
932
|
+
return _regenerator().w(function (_context0) {
|
|
933
|
+
while (1) switch (_context0.p = _context0.n) {
|
|
934
|
+
case 0:
|
|
935
|
+
if (!(smsNewPassword.length < 6)) {
|
|
936
|
+
_context0.n = 1;
|
|
937
|
+
break;
|
|
938
|
+
}
|
|
939
|
+
setError('Password must be at least 6 characters');
|
|
940
|
+
return _context0.a(2);
|
|
941
|
+
case 1:
|
|
942
|
+
if (!(smsNewPassword !== smsConfirmPassword)) {
|
|
943
|
+
_context0.n = 2;
|
|
944
|
+
break;
|
|
945
|
+
}
|
|
946
|
+
setError('Passwords do not match');
|
|
947
|
+
return _context0.a(2);
|
|
948
|
+
case 2:
|
|
949
|
+
phoneOrEmail = storedPhone() || formData.phoneOrEmail.trim();
|
|
950
|
+
setOtpLoading(true);
|
|
951
|
+
setError('');
|
|
952
|
+
_context0.p = 3;
|
|
953
|
+
resetExisting = /*#__PURE__*/function () {
|
|
954
|
+
var _ref10 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9() {
|
|
955
|
+
var _forgot$data;
|
|
956
|
+
var forgot, _forgot$data2, reset, _reset$data;
|
|
957
|
+
return _regenerator().w(function (_context9) {
|
|
958
|
+
while (1) switch (_context9.n) {
|
|
959
|
+
case 0:
|
|
960
|
+
_context9.n = 1;
|
|
961
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/forgot-password', projectId, {
|
|
962
|
+
method: 'POST',
|
|
963
|
+
body: {
|
|
964
|
+
phoneOrEmail: phoneOrEmail
|
|
965
|
+
}
|
|
966
|
+
});
|
|
967
|
+
case 1:
|
|
968
|
+
forgot = _context9.v;
|
|
969
|
+
if (!(!forgot.ok || !((_forgot$data = forgot.data) !== null && _forgot$data !== void 0 && _forgot$data.resetToken))) {
|
|
970
|
+
_context9.n = 2;
|
|
971
|
+
break;
|
|
972
|
+
}
|
|
973
|
+
throw new Error(((_forgot$data2 = forgot.data) === null || _forgot$data2 === void 0 ? void 0 : _forgot$data2.message) || 'Could not reset password.');
|
|
974
|
+
case 2:
|
|
975
|
+
_context9.n = 3;
|
|
976
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/reset-password', projectId, {
|
|
977
|
+
method: 'POST',
|
|
978
|
+
body: {
|
|
979
|
+
resetToken: forgot.data.resetToken,
|
|
980
|
+
newPassword: smsNewPassword
|
|
981
|
+
}
|
|
982
|
+
});
|
|
983
|
+
case 3:
|
|
984
|
+
reset = _context9.v;
|
|
985
|
+
if (reset.ok) {
|
|
986
|
+
_context9.n = 4;
|
|
987
|
+
break;
|
|
988
|
+
}
|
|
989
|
+
throw new Error(((_reset$data = reset.data) === null || _reset$data === void 0 ? void 0 : _reset$data.message) || 'Could not save the new password.');
|
|
990
|
+
case 4:
|
|
991
|
+
return _context9.a(2);
|
|
992
|
+
}
|
|
993
|
+
}, _callee9);
|
|
994
|
+
}));
|
|
995
|
+
return function resetExisting() {
|
|
996
|
+
return _ref10.apply(this, arguments);
|
|
997
|
+
};
|
|
998
|
+
}();
|
|
999
|
+
if (!(smsVerifyAuth !== null && smsVerifyAuth !== void 0 && smsVerifyAuth.user)) {
|
|
1000
|
+
_context0.n = 5;
|
|
1001
|
+
break;
|
|
1002
|
+
}
|
|
1003
|
+
_context0.n = 4;
|
|
1004
|
+
return resetExisting();
|
|
1005
|
+
case 4:
|
|
1006
|
+
_context0.n = 9;
|
|
1007
|
+
break;
|
|
1008
|
+
case 5:
|
|
1009
|
+
_context0.n = 6;
|
|
1010
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/register', projectId, {
|
|
1011
|
+
method: 'POST',
|
|
1012
|
+
body: {
|
|
1013
|
+
fullName: (formData.fullName || '').trim() || 'User',
|
|
1014
|
+
phoneOrEmail: phoneOrEmail,
|
|
1015
|
+
password: smsNewPassword
|
|
1016
|
+
}
|
|
1017
|
+
});
|
|
1018
|
+
case 6:
|
|
1019
|
+
registered = _context0.v;
|
|
1020
|
+
if (registered.ok) {
|
|
1021
|
+
_context0.n = 9;
|
|
1022
|
+
break;
|
|
1023
|
+
}
|
|
1024
|
+
msg = ((_registered$data = registered.data) === null || _registered$data === void 0 ? void 0 : _registered$data.message) || '';
|
|
1025
|
+
if (!/exist|already|registered/i.test(msg)) {
|
|
1026
|
+
_context0.n = 8;
|
|
1027
|
+
break;
|
|
1028
|
+
}
|
|
1029
|
+
_context0.n = 7;
|
|
1030
|
+
return resetExisting();
|
|
1031
|
+
case 7:
|
|
1032
|
+
_context0.n = 9;
|
|
1033
|
+
break;
|
|
1034
|
+
case 8:
|
|
1035
|
+
throw new Error(msg || 'Could not create the account.');
|
|
1036
|
+
case 9:
|
|
1037
|
+
_context0.n = 10;
|
|
1038
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/login', projectId, {
|
|
1039
|
+
method: 'POST',
|
|
1040
|
+
body: {
|
|
1041
|
+
phoneOrEmail: phoneOrEmail,
|
|
1042
|
+
password: smsNewPassword
|
|
1043
|
+
}
|
|
1044
|
+
});
|
|
1045
|
+
case 10:
|
|
1046
|
+
login = _context0.v;
|
|
1047
|
+
if (login.ok) {
|
|
1048
|
+
_context0.n = 11;
|
|
1049
|
+
break;
|
|
1050
|
+
}
|
|
1051
|
+
throw new Error(((_login$data2 = login.data) === null || _login$data2 === void 0 ? void 0 : _login$data2.message) || 'Password saved. Sign in with it.');
|
|
1052
|
+
case 11:
|
|
1053
|
+
setSmsResetStep(null);
|
|
1054
|
+
setSmsVerifyAuth(null);
|
|
1055
|
+
setSuccess('Password saved.');
|
|
1056
|
+
finishWithSession(login.data);
|
|
1057
|
+
_context0.n = 13;
|
|
1058
|
+
break;
|
|
1059
|
+
case 12:
|
|
1060
|
+
_context0.p = 12;
|
|
1061
|
+
_t9 = _context0.v;
|
|
1062
|
+
setError(_t9.message || 'Could not reset password.');
|
|
1063
|
+
case 13:
|
|
1064
|
+
_context0.p = 13;
|
|
1065
|
+
setOtpLoading(false);
|
|
1066
|
+
return _context0.f(13);
|
|
1067
|
+
case 14:
|
|
1068
|
+
return _context0.a(2);
|
|
1069
|
+
}
|
|
1070
|
+
}, _callee0, null, [[3, 12, 13, 14]]);
|
|
1071
|
+
}));
|
|
1072
|
+
return function handleSmsSavePassword() {
|
|
1073
|
+
return _ref1.apply(this, arguments);
|
|
1074
|
+
};
|
|
1075
|
+
}();
|
|
634
1076
|
var handleGetOtp = /*#__PURE__*/function () {
|
|
635
|
-
var
|
|
636
|
-
var _yield$
|
|
637
|
-
return _regenerator().w(function (
|
|
638
|
-
while (1) switch (
|
|
1077
|
+
var _ref11 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee1() {
|
|
1078
|
+
var _yield$apiCall4, data, ok, _t0;
|
|
1079
|
+
return _regenerator().w(function (_context1) {
|
|
1080
|
+
while (1) switch (_context1.p = _context1.n) {
|
|
639
1081
|
case 0:
|
|
640
1082
|
if (formData.phoneOrEmail.trim()) {
|
|
641
|
-
|
|
1083
|
+
_context1.n = 1;
|
|
642
1084
|
break;
|
|
643
1085
|
}
|
|
644
1086
|
setFieldErrors({
|
|
645
1087
|
phoneOrEmail: 'Phone or email is required for OTP'
|
|
646
1088
|
});
|
|
647
|
-
return
|
|
1089
|
+
return _context1.a(2);
|
|
648
1090
|
case 1:
|
|
649
1091
|
setOtpLoading(true);
|
|
650
1092
|
setError('');
|
|
651
1093
|
setFieldErrors({});
|
|
652
|
-
|
|
653
|
-
|
|
1094
|
+
_context1.p = 2;
|
|
1095
|
+
_context1.n = 3;
|
|
654
1096
|
return (0, _auth.apiCall)(apiUrl, "/auth/send-otp", projectId, {
|
|
655
1097
|
method: 'POST',
|
|
656
1098
|
body: {
|
|
@@ -658,9 +1100,9 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
658
1100
|
}
|
|
659
1101
|
});
|
|
660
1102
|
case 3:
|
|
661
|
-
_yield$
|
|
662
|
-
data = _yield$
|
|
663
|
-
ok = _yield$
|
|
1103
|
+
_yield$apiCall4 = _context1.v;
|
|
1104
|
+
data = _yield$apiCall4.data;
|
|
1105
|
+
ok = _yield$apiCall4.ok;
|
|
664
1106
|
if (ok) {
|
|
665
1107
|
setOtpSent(true);
|
|
666
1108
|
setSuccess('OTP sent successfully! Check your phone/email.');
|
|
@@ -668,23 +1110,23 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
668
1110
|
} else {
|
|
669
1111
|
setError(data.message || 'Failed to send OTP. Please try again.');
|
|
670
1112
|
}
|
|
671
|
-
|
|
1113
|
+
_context1.n = 5;
|
|
672
1114
|
break;
|
|
673
1115
|
case 4:
|
|
674
|
-
|
|
675
|
-
|
|
1116
|
+
_context1.p = 4;
|
|
1117
|
+
_t0 = _context1.v;
|
|
676
1118
|
setError('Network error. Please try again.');
|
|
677
1119
|
case 5:
|
|
678
|
-
|
|
1120
|
+
_context1.p = 5;
|
|
679
1121
|
setOtpLoading(false);
|
|
680
|
-
return
|
|
1122
|
+
return _context1.f(5);
|
|
681
1123
|
case 6:
|
|
682
|
-
return
|
|
1124
|
+
return _context1.a(2);
|
|
683
1125
|
}
|
|
684
|
-
},
|
|
1126
|
+
}, _callee1, null, [[2, 4, 5, 6]]);
|
|
685
1127
|
}));
|
|
686
1128
|
return function handleGetOtp() {
|
|
687
|
-
return
|
|
1129
|
+
return _ref11.apply(this, arguments);
|
|
688
1130
|
};
|
|
689
1131
|
}();
|
|
690
1132
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -705,17 +1147,20 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
705
1147
|
style: styles.subtitleContainer
|
|
706
1148
|
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
707
1149
|
style: styles.subtitle
|
|
708
|
-
}, isLogin ? '
|
|
709
|
-
style: styles.
|
|
710
|
-
|
|
711
|
-
|
|
1150
|
+
}, !isLogin ? 'Create your account' : loginGate === 'password' ? 'Enter your password.' : smsResetStep === 'otp' ? 'Enter the code we sent.' : loginGate === 'help' ? 'WhatsApp us to get in.' : smsResetStep === 'password' ? 'Set a password for next time.' : 'Enter your mobile number.'), showTooltip && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1151
|
+
style: styles.tooltip
|
|
1152
|
+
}, "Secure authentication powered by Lawazia Tech"))), authView === 'add-name' && pendingAuth ? /*#__PURE__*/_react["default"].createElement(_profileNameStep.profileNameStep.Component, {
|
|
1153
|
+
ctx: {
|
|
1154
|
+
user: pendingAuth.user,
|
|
1155
|
+
token: pendingAuth.token,
|
|
1156
|
+
apiUrl: apiUrl,
|
|
1157
|
+
projectId: projectId,
|
|
1158
|
+
defaultCountry: resolvedDefaultCountry
|
|
712
1159
|
},
|
|
713
|
-
|
|
714
|
-
|
|
1160
|
+
onComplete: function onComplete(patch) {
|
|
1161
|
+
handleAddPhoneComplete(_objectSpread(_objectSpread({}, pendingAuth.user), patch), pendingAuth.token);
|
|
715
1162
|
}
|
|
716
|
-
}
|
|
717
|
-
style: styles.tooltip
|
|
718
|
-
}, "Secure authentication powered by Lawazia Tech"))), authView === 'add-phone' && pendingAuth ? /*#__PURE__*/_react["default"].createElement(_AddPhonePanel["default"], {
|
|
1163
|
+
}) : authView === 'add-phone' && pendingAuth ? /*#__PURE__*/_react["default"].createElement(_AddPhonePanel["default"], {
|
|
719
1164
|
apiUrl: apiUrl,
|
|
720
1165
|
projectId: projectId,
|
|
721
1166
|
pendingAuth: pendingAuth,
|
|
@@ -753,23 +1198,14 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
753
1198
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
754
1199
|
htmlFor: "phoneOrEmail",
|
|
755
1200
|
style: styles.label
|
|
756
|
-
},
|
|
1201
|
+
}, "Mobile"), /*#__PURE__*/_react["default"].createElement(_PhoneInput["default"], {
|
|
757
1202
|
value: formData.phoneOrEmail,
|
|
758
1203
|
country: phoneCountry,
|
|
759
1204
|
onChange: handleRegisterPhoneChange,
|
|
760
|
-
international:
|
|
1205
|
+
international: true,
|
|
761
1206
|
allowedCountries: allowedCountries,
|
|
762
1207
|
defaultCountry: resolvedDefaultCountry,
|
|
763
1208
|
inputStyle: _objectSpread({}, fieldErrors.phoneOrEmail ? styles.inputError : {})
|
|
764
|
-
}) : /*#__PURE__*/_react["default"].createElement("input", {
|
|
765
|
-
type: "text",
|
|
766
|
-
id: "phoneOrEmail",
|
|
767
|
-
name: "phoneOrEmail",
|
|
768
|
-
value: formData.phoneOrEmail,
|
|
769
|
-
onChange: handlePhoneOrEmailChange,
|
|
770
|
-
style: _objectSpread(_objectSpread({}, styles.input), fieldErrors.phoneOrEmail ? styles.inputError : {}),
|
|
771
|
-
placeholder: "Phone (+country code) or email",
|
|
772
|
-
required: true
|
|
773
1209
|
}), fieldErrors.phoneOrEmail && /*#__PURE__*/_react["default"].createElement("div", {
|
|
774
1210
|
style: styles.fieldError
|
|
775
1211
|
}, fieldErrors.phoneOrEmail), !isLogin && requirePhoneVerification && /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -787,7 +1223,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
787
1223
|
style: styles.successText
|
|
788
1224
|
}, "Phone number verified successfully!"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
789
1225
|
id: "recaptcha-container"
|
|
790
|
-
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
1226
|
+
})), (!isLogin || loginGate === 'password') && smsResetStep !== 'otp' && smsResetStep !== 'password' && /*#__PURE__*/_react["default"].createElement("div", {
|
|
791
1227
|
style: styles.formGroup
|
|
792
1228
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
793
1229
|
htmlFor: "password",
|
|
@@ -867,27 +1303,78 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
867
1303
|
style: styles.checkboxText
|
|
868
1304
|
}, "I agree to the Terms of Service and Privacy Policy")), fieldErrors.terms && /*#__PURE__*/_react["default"].createElement("div", {
|
|
869
1305
|
style: styles.fieldError
|
|
870
|
-
}, fieldErrors.terms)), isLogin && /*#__PURE__*/_react["default"].createElement("div", {
|
|
871
|
-
style: styles.
|
|
872
|
-
}, /*#__PURE__*/_react["default"].createElement("
|
|
873
|
-
style: styles.
|
|
874
|
-
}, /*#__PURE__*/_react["default"].createElement("
|
|
875
|
-
type: "checkbox",
|
|
876
|
-
style: styles.checkbox
|
|
877
|
-
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
878
|
-
style: styles.checkboxText
|
|
879
|
-
}, "Remember me")), passwordResetHelpUrl ? /*#__PURE__*/_react["default"].createElement("a", {
|
|
1306
|
+
}, fieldErrors.terms)), isLogin && loginGate === 'help' && !smsResetStep && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1307
|
+
style: styles.otpSection
|
|
1308
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
1309
|
+
style: styles.otpText
|
|
1310
|
+
}, "No password on this number yet. WhatsApp us to create an account or reset."), passwordResetHelpUrl ? /*#__PURE__*/_react["default"].createElement("a", {
|
|
880
1311
|
href: passwordResetHelpUrl,
|
|
881
1312
|
target: "_blank",
|
|
882
1313
|
rel: "noopener noreferrer",
|
|
883
|
-
style: styles.
|
|
884
|
-
|
|
1314
|
+
style: _objectSpread(_objectSpread({}, styles.otpButton), {}, {
|
|
1315
|
+
display: 'block',
|
|
1316
|
+
textAlign: 'center',
|
|
1317
|
+
textDecoration: 'none'
|
|
1318
|
+
})
|
|
1319
|
+
}, passwordResetHelpLabel) : /*#__PURE__*/_react["default"].createElement("p", {
|
|
1320
|
+
style: styles.otpText
|
|
1321
|
+
}, "WhatsApp the app\u2019s support number."), /*#__PURE__*/_react["default"].createElement("button", {
|
|
885
1322
|
type: "button",
|
|
886
1323
|
onClick: function onClick() {
|
|
887
|
-
|
|
1324
|
+
setLoginGate('password');
|
|
1325
|
+
setError('');
|
|
1326
|
+
setSuccess('');
|
|
888
1327
|
},
|
|
889
1328
|
style: styles.forgotPasswordLink
|
|
890
|
-
}, "
|
|
1329
|
+
}, "I already have a password")), isLogin && resetChannel === 'otp' && smsResetStep === 'otp' && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1330
|
+
style: styles.otpSection
|
|
1331
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
1332
|
+
style: styles.otpText
|
|
1333
|
+
}, otpLoading && success === 'Sending a code…' ? 'Sending a code to your phone…' : 'Enter the 5-digit code we sent to your phone.'), /*#__PURE__*/_react["default"].createElement("input", {
|
|
1334
|
+
type: "text",
|
|
1335
|
+
inputMode: "numeric",
|
|
1336
|
+
autoComplete: "one-time-code",
|
|
1337
|
+
value: smsOtp.replace(/\D/g, '').slice(0, 5),
|
|
1338
|
+
onChange: function onChange(e) {
|
|
1339
|
+
return setSmsOtp(e.target.value);
|
|
1340
|
+
},
|
|
1341
|
+
placeholder: "5-digit code",
|
|
1342
|
+
style: styles.input
|
|
1343
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
1344
|
+
type: "button",
|
|
1345
|
+
onClick: handleSmsVerify,
|
|
1346
|
+
disabled: otpLoading || smsOtp.replace(/\D/g, '').length !== 5,
|
|
1347
|
+
style: _objectSpread(_objectSpread({}, styles.otpButton), otpLoading ? styles.buttonDisabled : {})
|
|
1348
|
+
}, otpLoading ? 'Checking…' : 'Verify code')), isLogin && resetChannel === 'otp' && smsResetStep === 'password' && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1349
|
+
style: styles.otpSection
|
|
1350
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
1351
|
+
style: styles.otpText
|
|
1352
|
+
}, smsVerifyAuth !== null && smsVerifyAuth !== void 0 && smsVerifyAuth.user ? 'Set a new password for this number.' : 'Create a password. Next time you sign in without SMS.'), /*#__PURE__*/_react["default"].createElement("input", {
|
|
1353
|
+
type: "password",
|
|
1354
|
+
autoComplete: "new-password",
|
|
1355
|
+
value: smsNewPassword,
|
|
1356
|
+
onChange: function onChange(e) {
|
|
1357
|
+
return setSmsNewPassword(e.target.value);
|
|
1358
|
+
},
|
|
1359
|
+
placeholder: "New password",
|
|
1360
|
+
style: _objectSpread(_objectSpread({}, styles.input), {}, {
|
|
1361
|
+
marginBottom: 8
|
|
1362
|
+
})
|
|
1363
|
+
}), /*#__PURE__*/_react["default"].createElement("input", {
|
|
1364
|
+
type: "password",
|
|
1365
|
+
autoComplete: "new-password",
|
|
1366
|
+
value: smsConfirmPassword,
|
|
1367
|
+
onChange: function onChange(e) {
|
|
1368
|
+
return setSmsConfirmPassword(e.target.value);
|
|
1369
|
+
},
|
|
1370
|
+
placeholder: "Confirm password",
|
|
1371
|
+
style: styles.input
|
|
1372
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
1373
|
+
type: "button",
|
|
1374
|
+
onClick: handleSmsSavePassword,
|
|
1375
|
+
disabled: otpLoading || smsNewPassword.length < 6,
|
|
1376
|
+
style: _objectSpread(_objectSpread({}, styles.otpButton), otpLoading ? styles.buttonDisabled : {})
|
|
1377
|
+
}, otpLoading ? 'Saving…' : 'Save password and sign in')), isLogin && resetChannel !== 'otp' && resetChannel !== 'whatsapp' && !passwordResetHelpUrl && showForgotPassword && showOtpOption && /*#__PURE__*/_react["default"].createElement("div", {
|
|
891
1378
|
style: styles.otpSection
|
|
892
1379
|
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
893
1380
|
style: styles.otpText
|
|
@@ -902,33 +1389,32 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
902
1389
|
style: styles.errorMessage
|
|
903
1390
|
}, error), success && /*#__PURE__*/_react["default"].createElement("div", {
|
|
904
1391
|
style: styles.successMessage
|
|
905
|
-
}, success), /*#__PURE__*/_react["default"].createElement("button", {
|
|
1392
|
+
}, success), !smsResetStep && loginGate !== 'help' && /*#__PURE__*/_react["default"].createElement("button", {
|
|
906
1393
|
type: "submit",
|
|
907
|
-
disabled: loading,
|
|
908
|
-
style: _objectSpread(_objectSpread({}, styles.button), loading ? styles.buttonDisabled : {})
|
|
909
|
-
}, loading ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
1394
|
+
disabled: loading || otpLoading,
|
|
1395
|
+
style: _objectSpread(_objectSpread({}, styles.button), loading || otpLoading ? styles.buttonDisabled : {})
|
|
1396
|
+
}, loading || otpLoading ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
910
1397
|
style: _objectSpread(_objectSpread({}, styles.spinner), {}, {
|
|
911
1398
|
animation: 'spin 1s linear infinite'
|
|
912
1399
|
})
|
|
913
|
-
}) : isLogin ? 'Sign In' : 'Sign Up')
|
|
914
|
-
style:
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
onClick: toggleMode,
|
|
920
|
-
style: styles.navigationLink
|
|
921
|
-
}, "Create one here") : /*#__PURE__*/_react["default"].createElement("a", {
|
|
922
|
-
href: "/signup",
|
|
923
|
-
style: styles.navigationLink
|
|
924
|
-
}, "Create one here")) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Already have an account?", ' ', shouldShowToggle ? /*#__PURE__*/_react["default"].createElement("button", {
|
|
1400
|
+
}) : isLogin ? loginGate === 'password' ? 'Sign In' : 'Continue' : 'Sign Up'), isLogin && loginGate === 'password' && !smsResetStep && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1401
|
+
style: {
|
|
1402
|
+
textAlign: 'center',
|
|
1403
|
+
marginTop: 12
|
|
1404
|
+
}
|
|
1405
|
+
}, resetChannel === 'otp' ? /*#__PURE__*/_react["default"].createElement("button", {
|
|
925
1406
|
type: "button",
|
|
926
|
-
onClick:
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
1407
|
+
onClick: handleSmsForgotStart,
|
|
1408
|
+
disabled: otpLoading,
|
|
1409
|
+
style: styles.forgotPasswordLink
|
|
1410
|
+
}, otpLoading ? 'Sending a code…' : 'Forgot password? Get a code') : passwordResetHelpUrl ? /*#__PURE__*/_react["default"].createElement("a", {
|
|
1411
|
+
href: passwordResetHelpUrl,
|
|
1412
|
+
target: "_blank",
|
|
1413
|
+
rel: "noopener noreferrer",
|
|
1414
|
+
style: styles.forgotPasswordLink
|
|
1415
|
+
}, passwordResetHelpLabel) : /*#__PURE__*/_react["default"].createElement("span", {
|
|
1416
|
+
style: styles.forgotPasswordLink
|
|
1417
|
+
}, "Forgot password? WhatsApp us"))))), showOtpModal && /*#__PURE__*/_react["default"].createElement("div", {
|
|
932
1418
|
style: styles.modalOverlay
|
|
933
1419
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
934
1420
|
style: styles.modalContent
|