@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.
- package/package.json +3 -3
- package/src/components/ApiAccess.d.ts.map +1 -1
- package/src/components/ApiAccess.js +16 -9
- package/src/components/BackupCodeLoginForm.d.ts +2 -2
- package/src/components/BackupCodeLoginForm.d.ts.map +1 -1
- package/src/components/BackupCodeLoginForm.js +62 -29
- package/src/components/BackupCodesForm.d.ts.map +1 -1
- package/src/components/BackupCodesForm.js +29 -17
- package/src/components/ChangePasswordForm.d.ts.map +1 -1
- package/src/components/ChangePasswordForm.js +29 -17
- package/src/components/ExpirationSecondsSelector.d.ts +3 -3
- package/src/components/ExpirationSecondsSelector.d.ts.map +1 -1
- package/src/components/ExpirationSecondsSelector.js +1 -1
- package/src/components/Flag.d.ts.map +1 -1
- package/src/components/ForgotPasswordForm.d.ts.map +1 -1
- package/src/components/ForgotPasswordForm.js +16 -9
- package/src/components/LoginForm.d.ts +2 -2
- package/src/components/LoginForm.d.ts.map +1 -1
- package/src/components/LoginForm.js +52 -29
- package/src/components/RegisterForm.d.ts +5 -3
- package/src/components/RegisterForm.d.ts.map +1 -1
- package/src/components/RegisterForm.js +62 -27
- package/src/components/ResetPasswordForm.d.ts.map +1 -1
- package/src/components/ResetPasswordForm.js +25 -15
- package/src/components/TopMenu.d.ts.map +1 -1
- package/src/components/TopMenu.js +3 -10
- package/src/components/TranslatedTitle.d.ts +1 -1
- package/src/components/TranslatedTitle.d.ts.map +1 -1
- package/src/components/TranslatedTitle.js +1 -1
- package/src/components/UserSettingsForm.d.ts +4 -3
- package/src/components/UserSettingsForm.d.ts.map +1 -1
- package/src/components/UserSettingsForm.js +58 -25
- package/src/components/VerifyEmailPage.d.ts.map +1 -1
- package/src/components/VerifyEmailPage.js +20 -11
- package/src/contexts/AuthProvider.d.ts +4 -4
- package/src/contexts/AuthProvider.d.ts.map +1 -1
- package/src/contexts/AuthProvider.js +82 -27
- package/src/contexts/I18nProvider.d.ts.map +1 -1
- package/src/contexts/MenuContext.d.ts +2 -2
- package/src/contexts/MenuContext.d.ts.map +1 -1
- package/src/contexts/MenuContext.js +72 -43
- package/src/hooks/useBackupCodes.d.ts.map +1 -1
- package/src/hooks/useBackupCodes.js +8 -4
- package/src/hooks/useEmailVerification.d.ts.map +1 -1
- package/src/hooks/useEmailVerification.js +8 -4
- package/src/hooks/useUserSettings.d.ts +4 -2
- package/src/hooks/useUserSettings.d.ts.map +1 -1
- package/src/hooks/useUserSettings.js +30 -13
- package/src/services/authService.d.ts.map +1 -1
- package/src/services/authService.js +45 -63
- package/src/wrappers/BackupCodeLoginWrapper.d.ts.map +1 -1
- package/src/wrappers/BackupCodeLoginWrapper.js +0 -1
- package/src/wrappers/ChangePasswordFormWrapper.d.ts.map +1 -1
- package/src/wrappers/RegisterFormWrapper.d.ts.map +1 -1
- package/src/wrappers/RegisterFormWrapper.js +7 -2
|
@@ -4,26 +4,28 @@ exports.useMenu = exports.MenuProvider = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
// src/app/menuContext.tsx
|
|
6
6
|
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
7
|
-
const suite_core_lib_2 = require("@digitaldefiance/suite-core-lib");
|
|
8
7
|
const icons_material_1 = require("@mui/icons-material");
|
|
9
8
|
const react_1 = require("react");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
9
|
+
const hooks_1 = require("../hooks");
|
|
10
|
+
const services_1 = require("../services");
|
|
12
11
|
const MenuType_1 = require("../types/MenuType");
|
|
12
|
+
const AuthProvider_1 = require("./AuthProvider");
|
|
13
13
|
const I18nProvider_1 = require("./I18nProvider");
|
|
14
|
-
const hooks_1 = require("../hooks");
|
|
15
14
|
const SuiteConfigProvider_1 = require("./SuiteConfigProvider");
|
|
16
|
-
const
|
|
15
|
+
const ThemeProvider_1 = require("./ThemeProvider");
|
|
17
16
|
const MenuContext = (0, react_1.createContext)(undefined);
|
|
18
|
-
const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true }) => {
|
|
19
|
-
const { userData: user, isAuthenticated, mnemonic, clearMnemonic, wallet, clearWallet } = (0, AuthProvider_1.useAuth)();
|
|
17
|
+
const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true, }) => {
|
|
18
|
+
const { userData: user, isAuthenticated, mnemonic, clearMnemonic, wallet, clearWallet, } = (0, AuthProvider_1.useAuth)();
|
|
20
19
|
const { mode: colorMode } = (0, ThemeProvider_1.useTheme)();
|
|
21
20
|
const registeredMenuOptions = (0, react_1.useRef)(new Set());
|
|
22
21
|
const [registeredOptions, setRegisteredOptions] = (0, react_1.useState)(new Map());
|
|
23
22
|
const { tComponent } = (0, I18nProvider_1.useI18n)();
|
|
24
23
|
const { baseUrl } = (0, SuiteConfigProvider_1.useSuiteConfig)();
|
|
25
24
|
const authenticatedApi = (0, react_1.useMemo)(() => (0, services_1.createAuthenticatedApiClient)(baseUrl), [baseUrl]);
|
|
26
|
-
const { toggleColorMode } = (0, hooks_1.useUserSettings)({
|
|
25
|
+
const { toggleColorMode } = (0, hooks_1.useUserSettings)({
|
|
26
|
+
authenticatedApi,
|
|
27
|
+
isAuthenticated,
|
|
28
|
+
});
|
|
27
29
|
const registerMenuOption = (0, react_1.useCallback)((option) => {
|
|
28
30
|
const unregister = () => {
|
|
29
31
|
setRegisteredOptions((prev) => {
|
|
@@ -53,7 +55,7 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
53
55
|
const baseOptions = [
|
|
54
56
|
{
|
|
55
57
|
id: 'dashboard',
|
|
56
|
-
label: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
58
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Dashboard),
|
|
57
59
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.Dashboard, {}),
|
|
58
60
|
link: '/dashboard',
|
|
59
61
|
requiresAuth: true,
|
|
@@ -70,7 +72,7 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
70
72
|
},
|
|
71
73
|
{
|
|
72
74
|
id: 'logout',
|
|
73
|
-
label: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
75
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.LogoutButton),
|
|
74
76
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.ExitToApp, {}),
|
|
75
77
|
link: '/logout',
|
|
76
78
|
requiresAuth: true,
|
|
@@ -79,7 +81,7 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
79
81
|
},
|
|
80
82
|
{
|
|
81
83
|
id: 'login',
|
|
82
|
-
label: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
84
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Login_LoginButton),
|
|
83
85
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.Login, {}),
|
|
84
86
|
link: '/login',
|
|
85
87
|
requiresAuth: false,
|
|
@@ -88,7 +90,7 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
88
90
|
},
|
|
89
91
|
{
|
|
90
92
|
id: 'register',
|
|
91
|
-
label: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
93
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.RegisterButton),
|
|
92
94
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.PersonAdd, {}),
|
|
93
95
|
link: '/register',
|
|
94
96
|
requiresAuth: false,
|
|
@@ -97,7 +99,7 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
97
99
|
},
|
|
98
100
|
{
|
|
99
101
|
id: 'forgot-password',
|
|
100
|
-
label: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
102
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.ForgotPassword_Title),
|
|
101
103
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.LockOpen, {}),
|
|
102
104
|
link: '/forgot-password',
|
|
103
105
|
requiresAuth: false,
|
|
@@ -106,31 +108,35 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
106
108
|
},
|
|
107
109
|
{
|
|
108
110
|
id: 'change-password',
|
|
109
|
-
label: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
111
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ChangePassword),
|
|
110
112
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.LockReset, {}),
|
|
111
113
|
link: '/change-password',
|
|
112
114
|
requiresAuth: true,
|
|
113
115
|
includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
|
|
114
116
|
index: index++,
|
|
115
117
|
},
|
|
116
|
-
...(enableBackupCodes
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
118
|
+
...(enableBackupCodes
|
|
119
|
+
? [
|
|
120
|
+
{
|
|
121
|
+
id: 'backup-code',
|
|
122
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.BackupCodeRecovery_Title),
|
|
123
|
+
icon: (0, jsx_runtime_1.jsx)(icons_material_1.Key, {}),
|
|
124
|
+
link: '/backup-code',
|
|
125
|
+
requiresAuth: false,
|
|
126
|
+
includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
|
|
127
|
+
index: index++,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
id: 'backup-codes',
|
|
131
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.BackupCodeRecovery_GenerateNewCodes),
|
|
132
|
+
icon: (0, jsx_runtime_1.jsx)(icons_material_1.Autorenew, {}),
|
|
133
|
+
link: '/backup-codes',
|
|
134
|
+
requiresAuth: true,
|
|
135
|
+
includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
|
|
136
|
+
index: index++,
|
|
137
|
+
},
|
|
138
|
+
]
|
|
139
|
+
: []),
|
|
134
140
|
{
|
|
135
141
|
id: 'divider',
|
|
136
142
|
label: '',
|
|
@@ -141,7 +147,7 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
141
147
|
},
|
|
142
148
|
{
|
|
143
149
|
id: 'clear-mnemonic',
|
|
144
|
-
label: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
150
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ClearMnemonic),
|
|
145
151
|
action: clearMnemonic,
|
|
146
152
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.Key, {}),
|
|
147
153
|
requiresAuth: true,
|
|
@@ -151,7 +157,7 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
151
157
|
},
|
|
152
158
|
{
|
|
153
159
|
id: 'clear-wallet',
|
|
154
|
-
label: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
160
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ClearWallet),
|
|
155
161
|
action: clearWallet,
|
|
156
162
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.Key, {}),
|
|
157
163
|
requiresAuth: true,
|
|
@@ -171,8 +177,8 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
171
177
|
{
|
|
172
178
|
id: 'theme-toggle',
|
|
173
179
|
label: colorMode === 'dark'
|
|
174
|
-
? tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
175
|
-
: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
180
|
+
? tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ThemeToggle_Light)
|
|
181
|
+
: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ThemeToggle_Dark),
|
|
176
182
|
icon: colorMode === 'dark' ? (0, jsx_runtime_1.jsx)(icons_material_1.Brightness7, {}) : (0, jsx_runtime_1.jsx)(icons_material_1.Brightness4, {}),
|
|
177
183
|
includeOnMenus: [MenuType_1.MenuTypes.SideMenu],
|
|
178
184
|
index: index++,
|
|
@@ -181,17 +187,28 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
181
187
|
},
|
|
182
188
|
{
|
|
183
189
|
id: 'user-settings',
|
|
184
|
-
label: tComponent(suite_core_lib_1.SuiteCoreComponentId,
|
|
190
|
+
label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Settings_Title),
|
|
185
191
|
icon: (0, jsx_runtime_1.jsx)(icons_material_1.Settings, {}),
|
|
186
192
|
link: '/user-settings',
|
|
187
193
|
requiresAuth: true,
|
|
188
194
|
includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
|
|
189
195
|
index: index++,
|
|
190
|
-
}
|
|
196
|
+
},
|
|
191
197
|
];
|
|
192
198
|
const allOptions = [...baseOptions, ...registeredOptions.values()];
|
|
193
199
|
return allOptions.sort((a, b) => a.index - b.index);
|
|
194
|
-
}, [
|
|
200
|
+
}, [
|
|
201
|
+
tComponent,
|
|
202
|
+
registeredOptions,
|
|
203
|
+
user?.roles,
|
|
204
|
+
colorMode,
|
|
205
|
+
toggleColorMode,
|
|
206
|
+
clearMnemonic,
|
|
207
|
+
clearWallet,
|
|
208
|
+
mnemonic,
|
|
209
|
+
wallet,
|
|
210
|
+
enableBackupCodes,
|
|
211
|
+
]);
|
|
195
212
|
const getMenuOptions = (0, react_1.useCallback)((menuType, includeDividers) => {
|
|
196
213
|
const MenuFilter = (o) => {
|
|
197
214
|
// Apply the custom filter first
|
|
@@ -210,14 +227,20 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
210
227
|
}, [isAuthenticated, menuOptions]);
|
|
211
228
|
(0, react_1.useEffect)(() => {
|
|
212
229
|
if (menuConfigs.length > 0) {
|
|
213
|
-
return registerMenuOptions(menuConfigs.flatMap(config => config.options));
|
|
230
|
+
return registerMenuOptions(menuConfigs.flatMap((config) => config.options));
|
|
214
231
|
}
|
|
215
232
|
return undefined;
|
|
216
233
|
}, [menuConfigs, registerMenuOptions]);
|
|
217
234
|
const getTopMenus = (0, react_1.useCallback)(() => {
|
|
218
235
|
const menus = [
|
|
219
|
-
...menuConfigs.map(config => ({ ...config, isUserMenu: false })),
|
|
220
|
-
{
|
|
236
|
+
...menuConfigs.map((config) => ({ ...config, isUserMenu: false })),
|
|
237
|
+
{
|
|
238
|
+
menuType: MenuType_1.MenuTypes.UserMenu,
|
|
239
|
+
menuIcon: (0, jsx_runtime_1.jsx)(icons_material_1.AccountCircle, {}),
|
|
240
|
+
priority: 0,
|
|
241
|
+
options: [],
|
|
242
|
+
isUserMenu: true,
|
|
243
|
+
},
|
|
221
244
|
];
|
|
222
245
|
return menus.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
223
246
|
}, [menuConfigs]);
|
|
@@ -229,7 +252,13 @@ const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true })
|
|
|
229
252
|
registerMenuOptions: registerMenuOptions,
|
|
230
253
|
getTopMenus: getTopMenus,
|
|
231
254
|
};
|
|
232
|
-
}, [
|
|
255
|
+
}, [
|
|
256
|
+
menuOptions,
|
|
257
|
+
getMenuOptions,
|
|
258
|
+
registerMenuOption,
|
|
259
|
+
registerMenuOptions,
|
|
260
|
+
getTopMenus,
|
|
261
|
+
]);
|
|
233
262
|
const memoizedChildren = (0, react_1.useMemo)(() => children, [children]);
|
|
234
263
|
return ((0, jsx_runtime_1.jsx)(MenuContext.Provider, { value: contextValue, children: memoizedChildren }));
|
|
235
264
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBackupCodes.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useBackupCodes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useBackupCodes.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useBackupCodes.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,mBAAmB,EAAE,CACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC,CAAC;IACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,cAAc,GACzB,UAAS,qBAA0B,KAClC,oBA4EF,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useBackupCodes = void 0;
|
|
4
|
+
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
4
5
|
const react_1 = require("react");
|
|
5
|
-
const services_1 = require("../services");
|
|
6
6
|
const contexts_1 = require("../contexts");
|
|
7
|
-
const
|
|
7
|
+
const services_1 = require("../services");
|
|
8
8
|
const useBackupCodes = (options = {}) => {
|
|
9
9
|
const { baseUrl } = (0, contexts_1.useSuiteConfig)();
|
|
10
10
|
const [backupCodesRemaining, setBackupCodesRemaining] = (0, react_1.useState)(options.initialCodeCount ?? null);
|
|
@@ -22,7 +22,9 @@ const useBackupCodes = (options = {}) => {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
catch (err) {
|
|
25
|
-
setError(err instanceof Error
|
|
25
|
+
setError(err instanceof Error
|
|
26
|
+
? err
|
|
27
|
+
: new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.BackupCodes_FailedToFetch));
|
|
26
28
|
setBackupCodesRemaining(0);
|
|
27
29
|
}
|
|
28
30
|
finally {
|
|
@@ -51,7 +53,9 @@ const useBackupCodes = (options = {}) => {
|
|
|
51
53
|
};
|
|
52
54
|
}
|
|
53
55
|
catch (err) {
|
|
54
|
-
const error = err instanceof Error
|
|
56
|
+
const error = err instanceof Error
|
|
57
|
+
? err
|
|
58
|
+
: new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.BackupCodes_FailedToGenerate);
|
|
55
59
|
setError(error);
|
|
56
60
|
throw error;
|
|
57
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEmailVerification.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useEmailVerification.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useEmailVerification.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useEmailVerification.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,CACX,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,eAAO,MAAM,oBAAoB,QAAO,0BAgCvC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useEmailVerification = void 0;
|
|
4
|
+
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
4
5
|
const react_1 = require("react");
|
|
5
|
-
const services_1 = require("../services");
|
|
6
6
|
const contexts_1 = require("../contexts");
|
|
7
|
-
const
|
|
7
|
+
const services_1 = require("../services");
|
|
8
8
|
const useEmailVerification = () => {
|
|
9
9
|
const { baseUrl } = (0, contexts_1.useSuiteConfig)();
|
|
10
10
|
const api = (0, react_1.useMemo)(() => (0, services_1.createAuthenticatedApiClient)(baseUrl), [baseUrl]);
|
|
@@ -14,11 +14,15 @@ const useEmailVerification = () => {
|
|
|
14
14
|
setIsVerifying(true);
|
|
15
15
|
setError(null);
|
|
16
16
|
try {
|
|
17
|
-
const result = await api.post('/verify-email', {
|
|
17
|
+
const result = await api.post('/verify-email', {
|
|
18
|
+
token: verificationToken,
|
|
19
|
+
});
|
|
18
20
|
return { success: true, message: result.data.message };
|
|
19
21
|
}
|
|
20
22
|
catch (err) {
|
|
21
|
-
const
|
|
23
|
+
const axiosError = err;
|
|
24
|
+
const errorMessage = axiosError.response?.data?.message ||
|
|
25
|
+
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Error_VerificationFailed);
|
|
22
26
|
const error = new Error(errorMessage);
|
|
23
27
|
setError(error);
|
|
24
28
|
return { success: false, message: errorMessage };
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { IUserSettings, IUserSettingsDTO } from '@digitaldefiance/suite-core-lib';
|
|
2
2
|
export interface UseUserSettingsOptions {
|
|
3
3
|
authenticatedApi: {
|
|
4
|
-
post: (url: string, data:
|
|
4
|
+
post: <T = unknown>(url: string, data: Record<string, unknown>) => Promise<{
|
|
5
|
+
data: T;
|
|
6
|
+
}>;
|
|
5
7
|
};
|
|
6
8
|
isAuthenticated: boolean;
|
|
7
9
|
}
|
|
@@ -18,7 +20,7 @@ export interface UseUserSettingsResult {
|
|
|
18
20
|
*/
|
|
19
21
|
export declare const useUserSettings: ({ authenticatedApi, isAuthenticated, }: UseUserSettingsOptions) => UseUserSettingsResult;
|
|
20
22
|
export interface UserSettingsValues extends IUserSettingsDTO {
|
|
21
|
-
[key: string]:
|
|
23
|
+
[key: string]: string | boolean;
|
|
22
24
|
}
|
|
23
25
|
export interface UseUserSettingsPublicResult {
|
|
24
26
|
settings: UserSettingsValues | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUserSettings.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useUserSettings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useUserSettings.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useUserSettings.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,aAAa,EACb,gBAAgB,EAGjB,MAAM,iCAAiC,CAAC;AAYzC,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,CAAC,CAAC;KAC3B,CAAC;IACF,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,+BAA+B,EAAE,CAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,KAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,wCAG7B,sBAAsB,KAAG,qBAsF3B,CAAC;AAGF,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,cAAc,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CACnD;QACE,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,GACD;QACE,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/C,CACJ,CAAC;IACF,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAO,2BAkGxC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useUserSettingsPublic = exports.useUserSettings = void 0;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
|
|
6
4
|
const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
|
|
5
|
+
const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
|
|
7
6
|
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
7
|
+
const react_1 = require("react");
|
|
8
8
|
const contexts_1 = require("../contexts");
|
|
9
9
|
const defaultUserSettings = {
|
|
10
10
|
darkMode: false,
|
|
@@ -36,7 +36,8 @@ const useUserSettings = ({ authenticatedApi, isAuthenticated, }) => {
|
|
|
36
36
|
if (setting.darkMode !== undefined) {
|
|
37
37
|
themeSetPaletteMode(setting.darkMode ? 'dark' : 'light');
|
|
38
38
|
}
|
|
39
|
-
if (setting.siteLanguage !== undefined &&
|
|
39
|
+
if (setting.siteLanguage !== undefined &&
|
|
40
|
+
setting.siteLanguage !== currentLanguage) {
|
|
40
41
|
changeLanguage(setting.siteLanguage);
|
|
41
42
|
}
|
|
42
43
|
// Send to server if authenticated and we have complete settings (including email)
|
|
@@ -49,7 +50,14 @@ const useUserSettings = ({ authenticatedApi, isAuthenticated, }) => {
|
|
|
49
50
|
setUserSettings(undefined);
|
|
50
51
|
themeSetPaletteMode('light');
|
|
51
52
|
}
|
|
52
|
-
}, [
|
|
53
|
+
}, [
|
|
54
|
+
isAuthenticated,
|
|
55
|
+
userSettings,
|
|
56
|
+
currentLanguage,
|
|
57
|
+
changeLanguage,
|
|
58
|
+
themeSetPaletteMode,
|
|
59
|
+
authenticatedApi,
|
|
60
|
+
]);
|
|
53
61
|
const changeLanguageSetting = (0, react_1.useCallback)(async (languageCode) => {
|
|
54
62
|
await setUserSettingAndUpdateSettings({ siteLanguage: languageCode });
|
|
55
63
|
}, [setUserSettingAndUpdateSettings]);
|
|
@@ -57,10 +65,15 @@ const useUserSettings = ({ authenticatedApi, isAuthenticated, }) => {
|
|
|
57
65
|
// When not authenticated, read from the current theme mode
|
|
58
66
|
// When authenticated, read from userSettings (synced with server)
|
|
59
67
|
const currentDarkMode = isAuthenticated
|
|
60
|
-
?
|
|
61
|
-
:
|
|
68
|
+
? userSettings?.darkMode ?? false
|
|
69
|
+
: currentThemeMode === 'dark';
|
|
62
70
|
await setUserSettingAndUpdateSettings({ darkMode: !currentDarkMode });
|
|
63
|
-
}, [
|
|
71
|
+
}, [
|
|
72
|
+
isAuthenticated,
|
|
73
|
+
userSettings?.darkMode,
|
|
74
|
+
currentThemeMode,
|
|
75
|
+
setUserSettingAndUpdateSettings,
|
|
76
|
+
]);
|
|
64
77
|
return {
|
|
65
78
|
changeLanguage: changeLanguageSetting,
|
|
66
79
|
currentLanguage,
|
|
@@ -100,7 +113,9 @@ const useUserSettingsPublic = () => {
|
|
|
100
113
|
}
|
|
101
114
|
}
|
|
102
115
|
catch (err) {
|
|
103
|
-
setError(err instanceof Error
|
|
116
|
+
setError(err instanceof Error
|
|
117
|
+
? err
|
|
118
|
+
: new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Settings_RetrieveFailure));
|
|
104
119
|
}
|
|
105
120
|
finally {
|
|
106
121
|
setIsLoading(false);
|
|
@@ -124,17 +139,19 @@ const useUserSettingsPublic = () => {
|
|
|
124
139
|
setSettings(values);
|
|
125
140
|
return {
|
|
126
141
|
success: true,
|
|
127
|
-
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Settings_SaveSuccess)
|
|
142
|
+
message: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Settings_SaveSuccess),
|
|
128
143
|
};
|
|
129
144
|
}
|
|
130
145
|
catch (err) {
|
|
131
|
-
const
|
|
146
|
+
const axiosError = err;
|
|
147
|
+
const errorMessage = axiosError.response?.data?.message ||
|
|
148
|
+
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Settings_UpdateFailed);
|
|
132
149
|
setError(err instanceof Error ? err : new Error(errorMessage));
|
|
133
150
|
return {
|
|
134
151
|
error: errorMessage,
|
|
135
|
-
errorType:
|
|
136
|
-
field:
|
|
137
|
-
errors:
|
|
152
|
+
errorType: axiosError.response?.data?.errorType,
|
|
153
|
+
field: axiosError.response?.data?.field,
|
|
154
|
+
errors: axiosError.response?.data?.errors,
|
|
138
155
|
};
|
|
139
156
|
}
|
|
140
157
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authService.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/services/authService.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,WAAW,EAEX,YAAY,EACZ,YAAY,EAEb,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"authService.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/services/authService.ts"],"names":[],"mappings":"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"}
|