@stokr/components-library 2.0.0-beta.21 → 2.0.0-beta.23

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.
@@ -36,7 +36,7 @@ var EnterCode = function EnterCode(props) {
36
36
  modalTop: true
37
37
  }, /*#__PURE__*/_react.default.createElement(_Text.default, null, /*#__PURE__*/_react.default.createElement("h3", null, "Enter 2FA code"))), /*#__PURE__*/_react.default.createElement(_Modal.ModalInner, {
38
38
  modalBot: true
39
- }, /*#__PURE__*/_react.default.createElement(_Modal.ModalLinkWrap, null, /*#__PURE__*/_react.default.createElement(_Modal.ModalLink, {
39
+ }, onModalSwitch && /*#__PURE__*/_react.default.createElement(_Modal.ModalLinkWrap, null, /*#__PURE__*/_react.default.createElement(_Modal.ModalLink, {
40
40
  as: "button",
41
41
  onClick: onModalSwitch
42
42
  }, "Lost your device")))), /*#__PURE__*/_react.default.createElement(_Grid.Column, {
@@ -33,14 +33,18 @@ var ResetCode = function ResetCode(props) {
33
33
  part: 8
34
34
  }, /*#__PURE__*/_react.default.createElement(_Modal.ModalInner, {
35
35
  modalTop: true
36
- }, /*#__PURE__*/_react.default.createElement(_Text.default, null, /*#__PURE__*/_react.default.createElement("h3", null, "Reset your 2FA"), /*#__PURE__*/_react.default.createElement("p", null, "Lost your device? No problem! We are here to help you"))), /*#__PURE__*/_react.default.createElement(_Modal.ModalInner, {
36
+ }, /*#__PURE__*/_react.default.createElement(_Text.default, null, /*#__PURE__*/_react.default.createElement("h3", null, "Lost your device?"), /*#__PURE__*/_react.default.createElement("p", null, "No problem! We are here to help you..."))), /*#__PURE__*/_react.default.createElement(_Modal.ModalInner, {
37
37
  modalBot: true
38
- }, /*#__PURE__*/_react.default.createElement(_Modal.ModalLinkWrap, null, "Know your 2FA code?", ' ', /*#__PURE__*/_react.default.createElement(_Modal.ModalLink, {
38
+ }, /*#__PURE__*/_react.default.createElement(_Modal.ModalLinkWrap, null, /*#__PURE__*/_react.default.createElement(_Modal.ModalLink, {
39
39
  as: "button",
40
40
  onClick: onModalSwitch
41
- }, "Enter code")))), /*#__PURE__*/_react.default.createElement(_Grid.Column, {
41
+ }, "Enter 2FA code")))), /*#__PURE__*/_react.default.createElement(_Grid.Column, {
42
42
  part: 8
43
- }, /*#__PURE__*/_react.default.createElement(_Modal.ModalInner, null, /*#__PURE__*/_react.default.createElement(_Text.default, null, /*#__PURE__*/_react.default.createElement("p", null, "Please contact our support team at support@stokr.io to help you reset your 2fa"))))));
43
+ }, /*#__PURE__*/_react.default.createElement(_Modal.ModalInner, null, /*#__PURE__*/_react.default.createElement(_Text.default, null, /*#__PURE__*/_react.default.createElement("p", null, "Contact us to reset your 2FA", ' ', /*#__PURE__*/_react.default.createElement("a", {
44
+ href: "https://stokr.zendesk.com/hc/en-us/requests/new",
45
+ target: "_blank",
46
+ rel: "noreferrer"
47
+ }, ' ', "https://stokr.zendesk.com/hc/en-us/requests/new")))))));
44
48
  };
45
49
  exports.ResetCode = ResetCode;
46
50
  var _default = ResetCode;
@@ -28,6 +28,9 @@ var Sucess2FA = function Sucess2FA(_ref) {
28
28
  })), /*#__PURE__*/_react.default.createElement(_Grid.Column, {
29
29
  part: 8
30
30
  }, /*#__PURE__*/_react.default.createElement(_Modal.ModalInner, null, /*#__PURE__*/_react.default.createElement(_ComponentWrapper.default, {
31
+ noPaddingVertical: true,
32
+ noPaddingHorizontal: true
33
+ }, /*#__PURE__*/_react.default.createElement(_Text.default, null, /*#__PURE__*/_react.default.createElement("p", null, "Your sign-in 2FA authentication is now set"))), /*#__PURE__*/_react.default.createElement(_ComponentWrapper.default, {
31
34
  noPaddingHorizontal: true
32
35
  }, /*#__PURE__*/_react.default.createElement(_Button.default, {
33
36
  minWidth: "240px",
@@ -47,6 +47,13 @@ var Enable2FAFlow = function Enable2FAFlow(_ref) {
47
47
  _useState4 = _slicedToArray(_useState3, 2),
48
48
  totpData = _useState4[0],
49
49
  settotpData = _useState4[1];
50
+ var _useState5 = (0, _react.useState)({
51
+ popup: undefined,
52
+ message: undefined
53
+ }),
54
+ _useState6 = _slicedToArray(_useState5, 2),
55
+ popupError = _useState6[0],
56
+ setpopupError = _useState6[1];
50
57
  (0, _react.useEffect)(function () {
51
58
  if (user) {
52
59
  generateTotpSecret(user).then(function (data) {
@@ -76,20 +83,33 @@ var Enable2FAFlow = function Enable2FAFlow(_ref) {
76
83
  return enrollUserToTotp(user, totpData.totpSecret, data.otpInput, user.displayName);
77
84
  case 5:
78
85
  setshowSuccess(true);
79
- _context.next = 13;
86
+ _context.next = 17;
80
87
  break;
81
88
  case 8:
82
89
  _context.prev = 8;
83
90
  _context.t0 = _context["catch"](2);
84
91
  console.log('🚀 ~ file: enable-2fa-flow.js:60 ~ error:', _context.t0);
85
92
  if (!(_context.t0.code === 'auth/invalid-verification-code')) {
86
- _context.next = 13;
93
+ _context.next = 16;
87
94
  break;
88
95
  }
96
+ setpopupError({
97
+ popup: 'enter2fa',
98
+ message: 'The verification code is not correct. Try again?'
99
+ });
89
100
  return _context.abrupt("return", {
90
101
  otpInput: 'Invalid code'
91
102
  });
92
- case 13:
103
+ case 16:
104
+ if (_context.t0.code === 'auth/requires-recent-login') {
105
+ onRequiresRecentLoginError && onRequiresRecentLoginError();
106
+ } else {
107
+ setpopupError({
108
+ popup: 'enter2fa',
109
+ message: "".concat(_context.t0 !== null && _context.t0 !== void 0 && _context.t0.message ? _context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.message : 'Something went wrong. Try again?')
110
+ });
111
+ }
112
+ case 17:
93
113
  case "end":
94
114
  return _context.stop();
95
115
  }
@@ -100,18 +120,6 @@ var Enable2FAFlow = function Enable2FAFlow(_ref) {
100
120
  };
101
121
  }();
102
122
  var onBackButtonClick = function onBackButtonClick(stepController, prevStepIndex) {
103
- if (prevStepIndex === 0) {
104
- //setselectedProject({})
105
- }
106
- // if (prevStepIndex === 0 || prevStepIndex === 1) {
107
- // setWallet(null)
108
- // setAddressToRegister(null)
109
- // setNameToRegister(null)
110
- // setRegisteredAddress(false)
111
- // setError('')
112
- // setverifiedAddress(false)
113
- // }
114
-
115
123
  stepController.changeStep(stepsNames[prevStepIndex], prevStepIndex);
116
124
  };
117
125
  return /*#__PURE__*/_react.default.createElement(_Modal.Modal, {
@@ -168,7 +176,7 @@ var Enable2FAFlow = function Enable2FAFlow(_ref) {
168
176
  changeStep: function changeStep() {
169
177
  console.log('here');
170
178
  },
171
- popupError: {},
179
+ popupError: popupError,
172
180
  onFormSend: onSubmit
173
181
  })));
174
182
  }))));
@@ -16,6 +16,7 @@ var _loginWithOtpFlow = _interopRequireDefault(require("./login-with-otp-flow"))
16
16
  var _enable2faFlow = _interopRequireDefault(require("./enable-2fa-flow"));
17
17
  var _disable2faFlow = _interopRequireDefault(require("./disable-2fa-flow"));
18
18
  var _colors = _interopRequireDefault(require("../../styles/colors"));
19
+ var _InfoIcon = _interopRequireDefault(require("components/InfoIcon/InfoIcon"));
19
20
  var _excluded = ["onRequiresRecentLoginError"];
20
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -81,6 +82,11 @@ var Main2FAFlow = function Main2FAFlow(_ref) {
81
82
  noPaddingHorizontal: true
82
83
  }, /*#__PURE__*/_react.default.createElement(_Text.default, null, /*#__PURE__*/_react.default.createElement("h5", null, "SET UP YOUR TWO FACTOR AUTHENTICATION"))), /*#__PURE__*/_react.default.createElement(_Text.default, null, /*#__PURE__*/_react.default.createElement("p", null, "Protect your account with an additional layer of security to sign in")), /*#__PURE__*/_react.default.createElement(_ComponentWrapper.default, {
83
84
  noPaddingHorizontal: true
85
+ }, /*#__PURE__*/_react.default.createElement(_InfoIcon.default, {
86
+ position: 'top',
87
+ html: is2FAEnabled ? 'Enabled' : 'Disabled',
88
+ noIcon: true,
89
+ noMarginLeft: true
84
90
  }, /*#__PURE__*/_react.default.createElement(_Switch.default, {
85
91
  value1: "enabled",
86
92
  value2: "disabled",
@@ -99,7 +105,7 @@ var Main2FAFlow = function Main2FAFlow(_ref) {
99
105
  switchOpenFlow('enable2fa', 'disable2fa');
100
106
  }
101
107
  }
102
- })), successMessage && /*#__PURE__*/_react.default.createElement(_ComponentWrapper.default, {
108
+ }))), successMessage && /*#__PURE__*/_react.default.createElement(_ComponentWrapper.default, {
103
109
  alignVertically: true,
104
110
  noPaddingHorizontal: true,
105
111
  noPaddingTop: true
@@ -111,7 +111,7 @@ exports.CryptoAddress = CryptoAddress;
111
111
  var copyToClipBoard = function copyToClipBoard(value, isCopied, setCopy) {
112
112
  return /*#__PURE__*/_react.default.createElement(_reactTippy.Tooltip, {
113
113
  position: "top",
114
- title: isCopied ? 'Copied to clipboard!' : 'Click to copy address to clipboard',
114
+ title: isCopied ? 'Copied to clipboard!' : 'Click to copy to clipboard',
115
115
  theme: "light",
116
116
  arrow: true,
117
117
  hideOnClick: false,
@@ -8,14 +8,19 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _reactTippy = require("react-tippy");
10
10
  var _InfoIcon = require("./InfoIcon.styles");
11
+ var _excluded = ["title", "html", "position", "noMargin", "noMarginLeft", "noMarginRight", "noIcon"];
11
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
14
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
12
15
  var InfoIcon = function InfoIcon(_ref) {
13
16
  var title = _ref.title,
14
17
  html = _ref.html,
15
18
  position = _ref.position,
16
19
  noMargin = _ref.noMargin,
17
20
  noMarginLeft = _ref.noMarginLeft,
18
- noMarginRight = _ref.noMarginRight;
21
+ noMarginRight = _ref.noMarginRight,
22
+ noIcon = _ref.noIcon,
23
+ props = _objectWithoutProperties(_ref, _excluded);
19
24
  return /*#__PURE__*/_react.default.createElement(_InfoIcon.Container, {
20
25
  noMargin: noMargin,
21
26
  noMarginLeft: noMarginLeft,
@@ -27,7 +32,7 @@ var InfoIcon = function InfoIcon(_ref) {
27
32
  theme: "light",
28
33
  arrow: true,
29
34
  duration: 200
30
- }, /*#__PURE__*/_react.default.createElement(_InfoIcon.Icon, null)));
35
+ }, noIcon ? props.children : /*#__PURE__*/_react.default.createElement(_InfoIcon.Icon, null)));
31
36
  };
32
37
  exports.InfoIcon = InfoIcon;
33
38
  InfoIcon.propTypes = {
@@ -30,11 +30,12 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
30
30
  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; } }
31
31
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
32
32
  var LoginModal = function LoginModal(props) {
33
- var _React$useState = _react.default.useState(null),
33
+ var _React$useState = _react.default.useState(),
34
34
  _React$useState2 = _slicedToArray(_React$useState, 2),
35
35
  email = _React$useState2[0],
36
36
  setemail = _React$useState2[1];
37
37
  var location = (0, _reactRouterDom.useLocation)();
38
+ var emailSetRef = _react.default.useRef(false);
38
39
  _react.default.useEffect(function () {
39
40
  //the URL will look like this: /login?email=some.email@email.com
40
41
  var search = location.search;
@@ -97,8 +98,9 @@ var LoginModal = function LoginModal(props) {
97
98
  setFieldValue(field.name, field.value, false);
98
99
  setFieldTouched(field.name);
99
100
  };
100
- if (email && values.email !== email) {
101
+ if (email && values.email !== email && !emailSetRef.current) {
101
102
  setFieldValue('email', email);
103
+ emailSetRef.current = true;
102
104
  }
103
105
 
104
106
  //hack to avoid error when autofill from browser
@@ -114,7 +116,7 @@ var LoginModal = function LoginModal(props) {
114
116
  name: "email",
115
117
  type: "email",
116
118
  label: "Your email",
117
- value: email || values.email,
119
+ value: values.email,
118
120
  onChange: onChangeWithTouch,
119
121
  onBlur: handleBlur,
120
122
  error: !!errors.email,
@@ -77,9 +77,9 @@ var RenderErrorModal = function RenderErrorModal(props) {
77
77
 
78
78
  //send activation email automatically if link is expired
79
79
  _react.default.useEffect(function () {
80
- if ((error === null || error === void 0 ? void 0 : error.code) === 'auth/invalid-action-code') {
81
- onModalSwitch && onModalSwitch();
82
- }
80
+ // if (error?.code === 'auth/invalid-action-code') {
81
+ // onModalSwitch && onModalSwitch()
82
+ // }
83
83
  if (error !== null && error !== void 0 && error.email && !isDisabled) {
84
84
  startCooldown();
85
85
  onResend({
@@ -257,7 +257,9 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
257
257
  return popup;
258
258
  });
259
259
  var mobileMenuOpen = this.state.mobileMenuOpen;
260
- var isFetchingUser = this.context.isFetchingUser;
260
+ var _this$context = this.context,
261
+ isFetchingUser = _this$context.isFetchingUser,
262
+ verifyEmailError = _this$context.verifyEmailError;
261
263
  if (!mobileMenuOpen) {
262
264
  if (isOpenCurrent) {
263
265
  document.body.style.overflow = 'hidden';
@@ -265,6 +267,10 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
265
267
  document.body.style.overflow = 'unset';
266
268
  }
267
269
  }
270
+ if ((verifyEmailError === null || verifyEmailError === void 0 ? void 0 : verifyEmailError.code) === 'auth/invalid-action-code' && !window.location.href.includes('login')) {
271
+ this.props.navigate('/login');
272
+ this.props.navigate(0);
273
+ }
268
274
 
269
275
  // Run after page loaded
270
276
  if (!isFetchingUser) {
@@ -289,21 +295,21 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
289
295
  isLoginModalOpen = _this$props3.isLoginModalOpen,
290
296
  setIsLoginModalOpen = _this$props3.setIsLoginModalOpen,
291
297
  cooldown = _this$props3.cooldown;
292
- var _this$context = this.context,
293
- getUser = _this$context.getUser,
294
- _this$context$user = _this$context.user,
295
- user = _this$context$user === void 0 ? {} : _this$context$user,
296
- avatar = _this$context.avatar,
297
- logoutUser = _this$context.logoutUser,
298
- loginUser = _this$context.loginUser,
299
- waitingFor2fa = _this$context.waitingFor2fa,
300
- firebaseError = _this$context.firebaseError,
301
- loginUserWithTotp = _this$context.loginUserWithTotp,
302
- createUser = _this$context.createUser,
303
- handleResetPassword = _this$context.handleResetPassword,
304
- resendActivationEmail = _this$context.resendActivationEmail,
305
- verifyEmailError = _this$context.verifyEmailError,
306
- isVerifyingEmail = _this$context.isVerifyingEmail;
298
+ var _this$context2 = this.context,
299
+ getUser = _this$context2.getUser,
300
+ _this$context2$user = _this$context2.user,
301
+ user = _this$context2$user === void 0 ? {} : _this$context2$user,
302
+ avatar = _this$context2.avatar,
303
+ logoutUser = _this$context2.logoutUser,
304
+ loginUser = _this$context2.loginUser,
305
+ waitingFor2fa = _this$context2.waitingFor2fa,
306
+ firebaseError = _this$context2.firebaseError,
307
+ loginUserWithTotp = _this$context2.loginUserWithTotp,
308
+ createUser = _this$context2.createUser,
309
+ handleResetPassword = _this$context2.handleResetPassword,
310
+ resendActivationEmail = _this$context2.resendActivationEmail,
311
+ verifyEmailError = _this$context2.verifyEmailError,
312
+ isVerifyingEmail = _this$context2.isVerifyingEmail;
307
313
  return /*#__PURE__*/_react.default.createElement(Outer, {
308
314
  fixed: fixed
309
315
  }, /*#__PURE__*/_react.default.createElement(_Header.default, {
@@ -161,8 +161,7 @@ var AuthProviderClass = /*#__PURE__*/function (_Component) {
161
161
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
162
162
  while (1) switch (_context3.prev = _context3.next) {
163
163
  case 0:
164
- mfaResolver = (0, _auth.getMultiFactorResolver)((0, _auth.getAuth)(), error); // const enrolledFactors = mfaResolver.hints.map(info => info.displayName);
165
- //console.log(enrolledFactors);
164
+ mfaResolver = (0, _auth.getMultiFactorResolver)((0, _auth.getAuth)(), error);
166
165
  selectedIndex = 0;
167
166
  _context3.t0 = mfaResolver.hints[selectedIndex].factorId;
168
167
  _context3.next = _context3.t0 === _auth.TotpMultiFactorGenerator.FACTOR_ID ? 5 : _context3.t0 === _auth.PhoneMultiFactorGenerator.FACTOR_ID ? 21 : 22;
@@ -178,7 +177,8 @@ var AuthProviderClass = /*#__PURE__*/function (_Component) {
178
177
  user = userCredential.user;
179
178
  _Auth.default.setAccessToken(user.accessToken);
180
179
  _this.setState({
181
- firebaseUser: user
180
+ firebaseUser: user,
181
+ waitingFor2fa: false
182
182
  });
183
183
  _context3.next = 20;
184
184
  break;
@@ -439,11 +439,11 @@ var AuthProviderClass = /*#__PURE__*/function (_Component) {
439
439
  if (!user) {
440
440
  throw new Error('User is not defined');
441
441
  }
442
- if (!(user !== null && user !== void 0 && user.emailVerified) && !window.location.href.includes('signup.')) {
442
+ if (!(user !== null && user !== void 0 && user.emailVerified) && !window.location.href.includes('resend-activation-email')) {
443
443
  window.location.href = "https://signup.".concat(process.env.REACT_APP_WEBSITE_DOMAIN, "/resend-activation-email");
444
444
  return false;
445
445
  }
446
- if (!(user !== null && user !== void 0 && user.country) && (user === null || user === void 0 ? void 0 : user.user_type) === 'investor' && !window.location.href.includes('signup.')) {
446
+ if (!(user !== null && user !== void 0 && user.country) && (user === null || user === void 0 ? void 0 : user.user_type) === 'investor' && !window.location.href.includes('/welcome')) {
447
447
  window.location.href = "https://signup.".concat(process.env.REACT_APP_WEBSITE_DOMAIN, "/welcome");
448
448
  return false;
449
449
  }
@@ -538,18 +538,17 @@ var AuthProviderClass = /*#__PURE__*/function (_Component) {
538
538
  _yield$Auth$updateUse = _context10.sent;
539
539
  user = _yield$Auth$updateUse.user;
540
540
  _this.setUser(user);
541
- _context10.next = 12;
542
- break;
543
- case 8:
544
- _context10.prev = 8;
541
+ return _context10.abrupt("return", user);
542
+ case 9:
543
+ _context10.prev = 9;
545
544
  _context10.t0 = _context10["catch"](0);
546
545
  console.log("Error updating the user: ".concat(_context10.t0));
547
546
  throw _context10.t0;
548
- case 12:
547
+ case 13:
549
548
  case "end":
550
549
  return _context10.stop();
551
550
  }
552
- }, _callee10, null, [[0, 8]]);
551
+ }, _callee10, null, [[0, 9]]);
553
552
  }));
554
553
  return function (_x14) {
555
554
  return _ref10.apply(this, arguments);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stokr/components-library",
3
- "version": "2.0.0-beta.21",
3
+ "version": "2.0.0-beta.23",
4
4
  "description": "STOKR - Components Library",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",