@digitaldefiance/express-suite-react-components 2.9.11 → 2.9.13

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.
Files changed (55) hide show
  1. package/package.json +3 -3
  2. package/src/components/ApiAccess.d.ts.map +1 -1
  3. package/src/components/ApiAccess.js +16 -9
  4. package/src/components/BackupCodeLoginForm.d.ts +2 -2
  5. package/src/components/BackupCodeLoginForm.d.ts.map +1 -1
  6. package/src/components/BackupCodeLoginForm.js +62 -29
  7. package/src/components/BackupCodesForm.d.ts.map +1 -1
  8. package/src/components/BackupCodesForm.js +29 -17
  9. package/src/components/ChangePasswordForm.d.ts.map +1 -1
  10. package/src/components/ChangePasswordForm.js +29 -17
  11. package/src/components/ExpirationSecondsSelector.d.ts +3 -3
  12. package/src/components/ExpirationSecondsSelector.d.ts.map +1 -1
  13. package/src/components/ExpirationSecondsSelector.js +1 -1
  14. package/src/components/Flag.d.ts.map +1 -1
  15. package/src/components/ForgotPasswordForm.d.ts.map +1 -1
  16. package/src/components/ForgotPasswordForm.js +16 -9
  17. package/src/components/LoginForm.d.ts +2 -2
  18. package/src/components/LoginForm.d.ts.map +1 -1
  19. package/src/components/LoginForm.js +52 -29
  20. package/src/components/RegisterForm.d.ts +5 -3
  21. package/src/components/RegisterForm.d.ts.map +1 -1
  22. package/src/components/RegisterForm.js +62 -27
  23. package/src/components/ResetPasswordForm.d.ts.map +1 -1
  24. package/src/components/ResetPasswordForm.js +25 -15
  25. package/src/components/TopMenu.d.ts.map +1 -1
  26. package/src/components/TopMenu.js +3 -10
  27. package/src/components/TranslatedTitle.d.ts +1 -1
  28. package/src/components/TranslatedTitle.d.ts.map +1 -1
  29. package/src/components/TranslatedTitle.js +1 -1
  30. package/src/components/UserSettingsForm.d.ts +4 -3
  31. package/src/components/UserSettingsForm.d.ts.map +1 -1
  32. package/src/components/UserSettingsForm.js +58 -25
  33. package/src/components/VerifyEmailPage.d.ts.map +1 -1
  34. package/src/components/VerifyEmailPage.js +20 -11
  35. package/src/contexts/AuthProvider.d.ts +4 -4
  36. package/src/contexts/AuthProvider.d.ts.map +1 -1
  37. package/src/contexts/AuthProvider.js +82 -27
  38. package/src/contexts/I18nProvider.d.ts.map +1 -1
  39. package/src/contexts/MenuContext.d.ts +2 -2
  40. package/src/contexts/MenuContext.d.ts.map +1 -1
  41. package/src/contexts/MenuContext.js +72 -43
  42. package/src/hooks/useBackupCodes.d.ts.map +1 -1
  43. package/src/hooks/useBackupCodes.js +8 -4
  44. package/src/hooks/useEmailVerification.d.ts.map +1 -1
  45. package/src/hooks/useEmailVerification.js +8 -4
  46. package/src/hooks/useUserSettings.d.ts +4 -2
  47. package/src/hooks/useUserSettings.d.ts.map +1 -1
  48. package/src/hooks/useUserSettings.js +30 -13
  49. package/src/services/authService.d.ts.map +1 -1
  50. package/src/services/authService.js +45 -63
  51. package/src/wrappers/BackupCodeLoginWrapper.d.ts.map +1 -1
  52. package/src/wrappers/BackupCodeLoginWrapper.js +0 -1
  53. package/src/wrappers/ChangePasswordFormWrapper.d.ts.map +1 -1
  54. package/src/wrappers/RegisterFormWrapper.d.ts.map +1 -1
  55. package/src/wrappers/RegisterFormWrapper.js +7 -2
@@ -34,14 +34,13 @@ class AuthService {
34
34
  ...(password ? { password } : {}),
35
35
  });
36
36
  if (response.status !== 201) {
37
+ const errorData = response.data;
37
38
  return {
38
- error: response.data.message
39
- ? response.data.message
39
+ error: errorData.message
40
+ ? errorData.message
40
41
  : (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Registration_Error),
41
- ...(response.data.errorType
42
- ? { errorType: response.data.errorType }
43
- : {}),
44
- ...(response.data.errors ? { errors: response.data.errors } : {}),
42
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
43
+ ...(errorData.errors ? { errors: errorData.errors } : {}),
45
44
  };
46
45
  }
47
46
  return {
@@ -50,25 +49,20 @@ class AuthService {
50
49
  (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Registration_Success, {
51
50
  MNEMONIC: response.data.mnemonic,
52
51
  }),
53
- mnemonic: response.data.mnemonic,
52
+ mnemonic: response.data.mnemonic ?? '',
54
53
  };
55
54
  }
56
55
  catch (error) {
57
56
  if ((0, axios_1.isAxiosError)(error) && error.response) {
57
+ const errorData = error.response.data;
58
58
  return {
59
- error: error.response.data.error?.message ??
60
- error.response.data.message ??
59
+ error: errorData.error ??
60
+ errorData.message ??
61
61
  error.message ??
62
62
  (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
63
- ...(error.response.data.errorType
64
- ? { errorType: error.response.data.errorType }
65
- : {}),
66
- ...(error.response.data.error?.field
67
- ? { field: error.response.data.error.field }
68
- : {}),
69
- ...(error.response.data.errors
70
- ? { errors: error.response.data.errors }
71
- : {}),
63
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
64
+ ...(errorData.error ? { field: 'general' } : {}),
65
+ ...(errorData.errors ? { errors: errorData.errors } : {}),
72
66
  };
73
67
  }
74
68
  else {
@@ -88,9 +82,6 @@ class AuthService {
88
82
  const loginRequest = await this.apiClient.post('/user/request-direct-login');
89
83
  if (loginRequest.data.challenge) {
90
84
  const { wallet } = this.cryptoCore.walletAndSeedFromMnemonic(mnemonic);
91
- const privateKey = wallet.getPrivateKey();
92
- // Get compressed public key (already includes prefix)
93
- const publicKeyWithPrefix = this.cryptoCore.getPublicKey(privateKey);
94
85
  const challengeBuffer = (0, ecies_lib_1.hexToUint8Array)(loginRequest.data.challenge);
95
86
  const privateKeyBuffer = wallet.getPrivateKey();
96
87
  const signature = this.eciesService.signMessage(privateKeyBuffer, challengeBuffer);
@@ -103,7 +94,7 @@ class AuthService {
103
94
  });
104
95
  if (loginResponse.data.token && loginResponse.data.user) {
105
96
  return {
106
- message: loginResponse.data.message,
97
+ message: loginResponse.data.message ?? '',
107
98
  token: loginResponse.data.token,
108
99
  user: loginResponse.data.user,
109
100
  wallet,
@@ -129,14 +120,13 @@ class AuthService {
129
120
  errorType: 'PasswordLoginNotEnabled',
130
121
  };
131
122
  }
123
+ const errorData = error.response.data;
132
124
  return {
133
- error: error.response.data.error?.message ??
134
- error.response.data.message ??
125
+ error: errorData.error ??
126
+ errorData.message ??
135
127
  error.message ??
136
128
  (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
137
- ...(error.response.data.errorType
138
- ? { errorType: error.response.data.errorType }
139
- : {}),
129
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
140
130
  };
141
131
  }
142
132
  console.error('directLogin: non-axios error:', error);
@@ -162,14 +152,13 @@ class AuthService {
162
152
  }
163
153
  catch (error) {
164
154
  if ((0, axios_1.isAxiosError)(error) && error.response) {
155
+ const errorData = error.response.data;
165
156
  return {
166
- error: error.response.data.error?.message ??
167
- error.response.data.message ??
157
+ error: errorData.error ??
158
+ errorData.message ??
168
159
  error.message ??
169
160
  (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
170
- ...(error.response.data.errorType
171
- ? { errorType: error.response.data.errorType }
172
- : {}),
161
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
173
162
  };
174
163
  }
175
164
  }
@@ -197,7 +186,7 @@ class AuthService {
197
186
  });
198
187
  if (response.data.token && response.data.user) {
199
188
  return {
200
- message: response.data.message,
189
+ message: response.data.message ?? '',
201
190
  token: response.data.token,
202
191
  user: response.data.user,
203
192
  wallet,
@@ -206,14 +195,13 @@ class AuthService {
206
195
  }
207
196
  catch (error) {
208
197
  if ((0, axios_1.isAxiosError)(error) && error.response) {
198
+ const errorData = error.response.data;
209
199
  return {
210
- error: error.response.data.error?.message ??
211
- error.response.data.message ??
200
+ error: errorData.error ??
201
+ errorData.message ??
212
202
  error.message ??
213
203
  (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
214
- ...(error.response.data.errorType
215
- ? { errorType: error.response.data.errorType }
216
- : {}),
204
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
217
205
  };
218
206
  }
219
207
  }
@@ -230,15 +218,14 @@ class AuthService {
230
218
  }
231
219
  catch (error) {
232
220
  if ((0, axios_1.isAxiosError)(error) && error.response) {
221
+ const errorData = error.response.data;
233
222
  return {
234
- error: error.response.data.message
235
- ? error.response.data.message
223
+ error: errorData.message
224
+ ? errorData.message
236
225
  : error.message
237
226
  ? error.message
238
227
  : (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
239
- ...(error.response.data.errorType
240
- ? { errorType: error.response.data.errorType }
241
- : {}),
228
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
242
229
  };
243
230
  }
244
231
  else {
@@ -255,7 +242,9 @@ class AuthService {
255
242
  const newToken = refreshResponse.headers['authorization'];
256
243
  let token = undefined;
257
244
  let user = undefined;
258
- if (newToken?.startsWith('Bearer ')) {
245
+ if (newToken &&
246
+ typeof newToken === 'string' &&
247
+ newToken.startsWith('Bearer ')) {
259
248
  token = newToken.slice(7);
260
249
  }
261
250
  if (refreshResponse.data.user) {
@@ -268,10 +257,6 @@ class AuthService {
268
257
  }
269
258
  catch (error) {
270
259
  console.error('Token refresh error:', error);
271
- if ((0, axios_1.isAxiosError)(error) && error.response) {
272
- console.error('Error response:', error.response.data);
273
- console.error('Error status:', error.response.status);
274
- }
275
260
  }
276
261
  throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError);
277
262
  }
@@ -285,14 +270,13 @@ class AuthService {
285
270
  }
286
271
  catch (error) {
287
272
  if ((0, axios_1.isAxiosError)(error) && error.response) {
273
+ const errorData = error.response.data;
288
274
  return {
289
- error: error.response.data.error?.message ??
290
- error.response.data.message ??
275
+ error: errorData.error ??
276
+ errorData.message ??
291
277
  error.message ??
292
278
  (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
293
- ...(error.response.data.errorType
294
- ? { errorType: error.response.data.errorType }
295
- : {}),
279
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
296
280
  };
297
281
  }
298
282
  return {
@@ -319,26 +303,24 @@ class AuthService {
319
303
  ...(response.data.message ? { message: response.data.message } : {}),
320
304
  };
321
305
  }
306
+ const errorData = response.data;
322
307
  return {
323
- error: response.data.message
324
- ? response.data.message
308
+ error: errorData.message
309
+ ? errorData.message
325
310
  : (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken),
326
- ...(response.data.errorType
327
- ? { errorType: response.data.errorType }
328
- : {}),
311
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
329
312
  };
330
313
  }
331
314
  catch (error) {
332
315
  console.error('Backup code login error:', error);
333
316
  if ((0, axios_1.isAxiosError)(error) && error.response) {
317
+ const errorData = error.response.data;
334
318
  return {
335
- error: error.response.data.error.message ??
336
- error.response.data.message ??
319
+ error: errorData.error ??
320
+ errorData.message ??
337
321
  error.message ??
338
322
  (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
339
- ...(error.response.data.errorType
340
- ? { errorType: error.response.data.errorType }
341
- : {}),
323
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
342
324
  status: error.response.status,
343
325
  };
344
326
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BackupCodeLoginWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/BackupCodeLoginWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;CAC5E;AAED,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAwBlE,CAAC"}
1
+ {"version":3,"file":"BackupCodeLoginWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/BackupCodeLoginWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;CAC5E;AAED,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAuBlE,CAAC"}
@@ -8,7 +8,6 @@ const contexts_1 = require("../contexts");
8
8
  const BackupCodeLoginWrapper = ({ onSuccess, componentProps = {}, }) => {
9
9
  const { backupCodeLogin, isAuthenticated } = (0, contexts_1.useAuth)();
10
10
  const navigate = (0, react_router_dom_1.useNavigate)();
11
- const { routes } = (0, contexts_1.useSuiteConfig)();
12
11
  const handleSubmit = async (...args) => {
13
12
  const result = await backupCodeLogin(...args);
14
13
  if ('token' in result && onSuccess) {
@@ -1 +1 @@
1
- {"version":3,"file":"ChangePasswordFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/ChangePasswordFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;CAC3E;AAED,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,8BAA8B,CAqBxE,CAAC"}
1
+ {"version":3,"file":"ChangePasswordFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/ChangePasswordFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;CAC3E;AAED,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,8BAA8B,CAwBxE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegisterFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/RegisterFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAoC,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGjG,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,WAAW,GAAG,oBAAoB,CAAC,CAAC,CAAC;CACpG;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAoC5D,CAAC"}
1
+ {"version":3,"file":"RegisterFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/RegisterFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAEL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CACtB,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,WAAW,GAAG,oBAAoB,CAAC,CACzE,CAAC;CACH;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CA2C5D,CAAC"}
@@ -9,7 +9,7 @@ const RegisterFormWrapper = ({ onSuccess, redirectTo, componentProps = {}, }) =>
9
9
  const { register } = (0, contexts_1.useAuth)();
10
10
  const navigate = (0, react_router_dom_1.useNavigate)();
11
11
  const { routes, timezones } = (0, contexts_1.useSuiteConfig)();
12
- const handleSubmit = async (values, usePassword) => {
12
+ const handleSubmit = async (values) => {
13
13
  const result = await register(values.username, values.email, values.timezone || 'UTC', values.password);
14
14
  if ('error' in result) {
15
15
  throw new Error(result.error);
@@ -20,7 +20,12 @@ const RegisterFormWrapper = ({ onSuccess, redirectTo, componentProps = {}, }) =>
20
20
  navigate(redirectTo || routes.verifyEmail || '/verify-email');
21
21
  return result;
22
22
  };
23
- const defaultTimezones = timezones || ['UTC', 'America/New_York', 'America/Los_Angeles', 'Europe/London'];
23
+ const defaultTimezones = timezones || [
24
+ 'UTC',
25
+ 'America/New_York',
26
+ 'America/Los_Angeles',
27
+ 'Europe/London',
28
+ ];
24
29
  return ((0, jsx_runtime_1.jsx)(RegisterForm_1.RegisterForm, { onSubmit: handleSubmit, timezones: defaultTimezones, getInitialTimezone: () => Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC', ...componentProps }));
25
30
  };
26
31
  exports.RegisterFormWrapper = RegisterFormWrapper;