@stokr/components-library 2.3.41-beta.17 → 2.3.41-beta.18

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.
@@ -92,7 +92,8 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
92
92
  },
93
93
  isActionLoading: undefined,
94
94
  termsData: undefined,
95
- isPasswordResetLinkExpired: false
95
+ isPasswordResetLinkExpired: false,
96
+ tokenCheckComplete: false
96
97
  });
97
98
  _defineProperty(_assertThisInitialized(_this), "componentDidMount", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
98
99
  var _this$props, isResetPassword, urlParams, oobCode, tokenStatus;
@@ -101,44 +102,69 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
101
102
  case 0:
102
103
  _this$props = _this.props, isResetPassword = _this$props.isResetPassword, urlParams = _this$props.urlParams; // check if reset password modal and extract oobCode from URL params
103
104
  if (!isResetPassword) {
104
- _context.next = 15;
105
+ _context.next = 22;
105
106
  break;
106
107
  }
108
+ console.log('ifResetPassword running');
107
109
  oobCode = urlParams === null || urlParams === void 0 ? void 0 : urlParams.getUrlParam('oobCode');
108
110
  if (!(oobCode && oobCode !== '')) {
109
- _context.next = 15;
111
+ _context.next = 19;
110
112
  break;
111
113
  }
112
- _context.prev = 4;
113
- _context.next = 7;
114
+ console.log('ifOobCode running');
115
+ _context.prev = 6;
116
+ _context.next = 9;
114
117
  return _this.checkTokenExpiration();
115
- case 7:
118
+ case 9:
116
119
  tokenStatus = _context.sent;
117
120
  _this.setState(function (prevState) {
118
121
  return _objectSpread(_objectSpread({}, prevState), {}, {
119
- isPasswordResetLinkExpired: tokenStatus.expired
122
+ isPasswordResetLinkExpired: false,
123
+ tokenCheckComplete: true
120
124
  });
121
125
  });
122
- _context.next = 15;
126
+ _context.next = 17;
123
127
  break;
124
- case 11:
125
- _context.prev = 11;
126
- _context.t0 = _context["catch"](4);
128
+ case 13:
129
+ _context.prev = 13;
130
+ _context.t0 = _context["catch"](6);
127
131
  console.error('Error checking token expiration in componentDidMount:', _context.t0);
128
132
  // if there's an error checking the token, assume it's expired
129
133
  _this.setState(function (prevState) {
130
134
  return _objectSpread(_objectSpread({}, prevState), {}, {
131
- isPasswordResetLinkExpired: true
135
+ isPasswordResetLinkExpired: true,
136
+ tokenCheckComplete: true
137
+ });
138
+ });
139
+ case 17:
140
+ _context.next = 20;
141
+ break;
142
+ case 19:
143
+ // No oobCode means expired/invalid
144
+ _this.setState(function (prevState) {
145
+ return _objectSpread(_objectSpread({}, prevState), {}, {
146
+ isPasswordResetLinkExpired: true,
147
+ tokenCheckComplete: true
148
+ });
149
+ });
150
+ case 20:
151
+ _context.next = 23;
152
+ break;
153
+ case 22:
154
+ // Not a reset password flow
155
+ _this.setState(function (prevState) {
156
+ return _objectSpread(_objectSpread({}, prevState), {}, {
157
+ tokenCheckComplete: true
132
158
  });
133
159
  });
134
- case 15:
160
+ case 23:
135
161
  case "end":
136
162
  return _context.stop();
137
163
  }
138
- }, _callee, null, [[4, 11]]);
164
+ }, _callee, null, [[6, 13]]);
139
165
  })));
140
166
  _defineProperty(_assertThisInitialized(_this), "checkTokenExpiration", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
141
- var urlParams, oobCode, result;
167
+ var urlParams, oobCode, result, _error$message;
142
168
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
143
169
  while (1) switch (_context2.prev = _context2.next) {
144
170
  case 0:
@@ -170,39 +196,56 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
170
196
  _context2.prev = 13;
171
197
  _context2.t0 = _context2["catch"](3);
172
198
  console.error('Error checking token expiration:', _context2.t0);
199
+
200
+ // Check for specific error codes that indicate invalid/expired token
201
+ if (!(_context2.t0 !== null && _context2.t0 !== void 0 && (_error$message = _context2.t0.message) !== null && _error$message !== void 0 && _error$message.includes('INVALID_OOB_CODE') || (_context2.t0 === null || _context2.t0 === void 0 ? void 0 : _context2.t0.code) === 'auth/invalid-action-code' || (_context2.t0 === null || _context2.t0 === void 0 ? void 0 : _context2.t0.code) === 'auth/expired-action-code')) {
202
+ _context2.next = 18;
203
+ break;
204
+ }
173
205
  return _context2.abrupt("return", {
174
206
  expired: true
175
207
  });
176
- case 17:
208
+ case 18:
209
+ return _context2.abrupt("return", {
210
+ expired: true
211
+ });
212
+ case 19:
177
213
  case "end":
178
214
  return _context2.stop();
179
215
  }
180
216
  }, _callee2, null, [[3, 13]]);
181
217
  })));
182
218
  _defineProperty(_assertThisInitialized(_this), "checkForModals", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
183
- var _this$props2, isLogin, isSignUp, isResetPassword, isVerifyEmail, user, _this$state, isModalOpen, isPasswordResetLinkExpired, login, signUp, resetPassword, verifyEmail, isAnyModalOpen;
219
+ var _this$props2, isLogin, isSignUp, isResetPassword, isVerifyEmail, user, _this$state, isModalOpen, isPasswordResetLinkExpired, tokenCheckComplete, login, signUp, resetPassword, verifyEmail, forgot, isAnyModalOpen;
184
220
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
185
221
  while (1) switch (_context3.prev = _context3.next) {
186
222
  case 0:
187
223
  _this$props2 = _this.props, isLogin = _this$props2.isLogin, isSignUp = _this$props2.isSignUp, isResetPassword = _this$props2.isResetPassword, isVerifyEmail = _this$props2.isVerifyEmail;
188
224
  user = _this.context.user;
189
- _this$state = _this.state, isModalOpen = _this$state.isModalOpen, isPasswordResetLinkExpired = _this$state.isPasswordResetLinkExpired;
190
- login = isModalOpen.login, signUp = isModalOpen.signUp, resetPassword = isModalOpen.resetPassword, verifyEmail = isModalOpen.verifyEmail; //checks if any modal is open
225
+ _this$state = _this.state, isModalOpen = _this$state.isModalOpen, isPasswordResetLinkExpired = _this$state.isPasswordResetLinkExpired, tokenCheckComplete = _this$state.tokenCheckComplete;
226
+ login = isModalOpen.login, signUp = isModalOpen.signUp, resetPassword = isModalOpen.resetPassword, verifyEmail = isModalOpen.verifyEmail, forgot = isModalOpen.forgot; // token check needs to complete first
227
+ if (tokenCheckComplete) {
228
+ _context3.next = 6;
229
+ break;
230
+ }
231
+ return _context3.abrupt("return");
232
+ case 6:
233
+ //checks if any modal is open
191
234
  //if true we won't open any modal from below
192
235
  isAnyModalOpen = Object.values(isModalOpen).some(function (value) {
193
236
  return value === true;
194
237
  });
195
238
  if (!isAnyModalOpen) {
196
- _context3.next = 7;
239
+ _context3.next = 9;
197
240
  break;
198
241
  }
199
242
  return _context3.abrupt("return");
200
- case 7:
243
+ case 9:
201
244
  //dont open if modal is already open or user is logged in
202
245
  if (isLogin && !user && !login) {
203
246
  _this.setState(function (prevState) {
204
247
  return _objectSpread(_objectSpread({}, prevState), {}, {
205
- isModalOpen: _objectSpread(_objectSpread({}, isModalOpen), {}, {
248
+ isModalOpen: _objectSpread(_objectSpread({}, prevState.isModalOpen), {}, {
206
249
  login: true
207
250
  })
208
251
  });
@@ -211,27 +254,34 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
211
254
  if (isSignUp && !user && !signUp) {
212
255
  _this.setState(function (prevState) {
213
256
  return _objectSpread(_objectSpread({}, prevState), {}, {
214
- isModalOpen: _objectSpread(_objectSpread({}, isModalOpen), {}, {
257
+ isModalOpen: _objectSpread(_objectSpread({}, prevState.isModalOpen), {}, {
215
258
  signUp: true
216
259
  })
217
260
  });
218
261
  });
219
262
  }
220
- if (isResetPassword && !user && !resetPassword) {
263
+ if (isResetPassword && !user && !resetPassword && !forgot) {
221
264
  if (isPasswordResetLinkExpired) {
222
- // open special version of forgot password modal if token is expired
265
+ // open forgot password modal if token is expired/invalid
266
+ console.log('Opening forgot password modal - token expired/invalid');
223
267
  _this.setState(function (prevState) {
224
268
  return _objectSpread(_objectSpread({}, prevState), {}, {
225
- isModalOpen: _objectSpread(_objectSpread({}, isModalOpen), {}, {
269
+ isModalOpen: _objectSpread(_objectSpread({}, prevState.isModalOpen), {}, {
226
270
  forgot: true
227
- })
271
+ }),
272
+ popupError: {
273
+ popup: 'forgot',
274
+ message: 'This password reset link has expired or is invalid. Please request a new one.',
275
+ field: undefined
276
+ }
228
277
  });
229
278
  });
230
279
  } else {
231
280
  // open usual reset password modal if token is valid
281
+ console.log('Opening reset password modal - token valid');
232
282
  _this.setState(function (prevState) {
233
283
  return _objectSpread(_objectSpread({}, prevState), {}, {
234
- isModalOpen: _objectSpread(_objectSpread({}, isModalOpen), {}, {
284
+ isModalOpen: _objectSpread(_objectSpread({}, prevState.isModalOpen), {}, {
235
285
  resetPassword: true
236
286
  })
237
287
  });
@@ -241,13 +291,13 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
241
291
  if (isVerifyEmail && !verifyEmail) {
242
292
  _this.setState(function (prevState) {
243
293
  return _objectSpread(_objectSpread({}, prevState), {}, {
244
- isModalOpen: _objectSpread(_objectSpread({}, isModalOpen), {}, {
294
+ isModalOpen: _objectSpread(_objectSpread({}, prevState.isModalOpen), {}, {
245
295
  verifyEmail: true
246
296
  })
247
297
  });
248
298
  });
249
299
  }
250
- case 11:
300
+ case 13:
251
301
  case "end":
252
302
  return _context3.stop();
253
303
  }
@@ -265,7 +315,7 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
265
315
  window.history.pushState('', '', modalId === 'login' ? '/login' : modalId === 'signUp' ? '/signup' : '/');
266
316
 
267
317
  //when we close login or signup or reset password modal, we want to remove modal url
268
- if ((modalId === 'login' || modalId === 'signUp' || modalId === 'resetPassword' || modalId === 'verifyEmail') && !status) {
318
+ if ((modalId === 'login' || modalId === 'signUp' || modalId === 'resetPassword' || modalId === 'verifyEmail' || modalId === 'forgot') && !status) {
269
319
  navigate('/');
270
320
  }
271
321
  }
@@ -373,8 +423,8 @@ var HeaderHoClass = /*#__PURE__*/function (_Component) {
373
423
  this.props.navigate(0);
374
424
  }
375
425
 
376
- // Run after page loaded
377
- if (!isFetchingUser) {
426
+ // Run after page loaded AND token check is complete
427
+ if (!isFetchingUser && this.state.tokenCheckComplete) {
378
428
  this.checkForModals();
379
429
  }
380
430
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stokr/components-library",
3
- "version": "2.3.41-beta.17",
3
+ "version": "2.3.41-beta.18",
4
4
  "description": "STOKR - Components Library",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",