dce-reactkit 3.6.2 → 3.6.4
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/cjs/index.js +32 -24
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/AppWrapper.d.ts +1 -1
- package/dist/cjs/types/helpers/visitServerEndpoint.d.ts +0 -6
- package/dist/esm/index.js +32 -24
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/AppWrapper.d.ts +1 -1
- package/dist/esm/types/helpers/visitServerEndpoint.d.ts +0 -6
- package/package.json +1 -1
- package/src/components/AppWrapper.tsx +15 -2
- package/src/helpers/visitServerEndpoint.tsx +7 -39
|
@@ -60,6 +60,6 @@ export declare const addFatalErrorHandler: (handler: () => void) => void;
|
|
|
60
60
|
* Show the "session expired" message
|
|
61
61
|
* @author Gabe Abrams
|
|
62
62
|
*/
|
|
63
|
-
export declare const showSessionExpiredMessage: () => void
|
|
63
|
+
export declare const showSessionExpiredMessage: () => Promise<void>;
|
|
64
64
|
declare const AppWrapper: React.FC<Props>;
|
|
65
65
|
export default AppWrapper;
|
package/package.json
CHANGED
|
@@ -329,8 +329,21 @@ let setSessionHasExpired: (isExpired: boolean) => void;
|
|
|
329
329
|
* Show the "session expired" message
|
|
330
330
|
* @author Gabe Abrams
|
|
331
331
|
*/
|
|
332
|
-
export const showSessionExpiredMessage = () => {
|
|
333
|
-
|
|
332
|
+
export const showSessionExpiredMessage = async () => {
|
|
333
|
+
// Wait for helper to exist
|
|
334
|
+
await waitForHelper(() => {
|
|
335
|
+
return !!setSessionHasExpired;
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
// Show session expired message
|
|
339
|
+
if (setSessionHasExpired) {
|
|
340
|
+
setSessionHasExpired(true);
|
|
341
|
+
} else {
|
|
342
|
+
showFatalError(
|
|
343
|
+
'Your session has expired. Please start over.',
|
|
344
|
+
'Session Expired',
|
|
345
|
+
);
|
|
346
|
+
}
|
|
334
347
|
};
|
|
335
348
|
|
|
336
349
|
/*------------------------------------------------------------------------*/
|
|
@@ -1,28 +1,14 @@
|
|
|
1
|
+
/* eslint-disable no-underscore-dangle */
|
|
2
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
1
3
|
// Import custom error
|
|
2
4
|
import ErrorWithCode from '../errors/ErrorWithCode';
|
|
3
5
|
import ReactKitErrorCode from '../types/ReactKitErrorCode';
|
|
4
6
|
|
|
5
7
|
// Import helpers
|
|
8
|
+
// TODO: fix dependency cycle
|
|
9
|
+
// eslint-disable-next-line import/no-cycle
|
|
6
10
|
import { getSendRequest } from '../client/initClient';
|
|
7
|
-
|
|
8
|
-
/*------------------------------------------------------------------------*/
|
|
9
|
-
/* Listener */
|
|
10
|
-
/*------------------------------------------------------------------------*/
|
|
11
|
-
|
|
12
|
-
// Handler for session expiry
|
|
13
|
-
let sessionExpiryHandler: () => void;
|
|
14
|
-
|
|
15
|
-
// Keep track of whether or not session expiry has already been handled
|
|
16
|
-
let sessionAlreadyExpired = false;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Set the session expiry handler
|
|
20
|
-
* @author Gabe Abrams
|
|
21
|
-
* @param handler new handler to use when session expires
|
|
22
|
-
*/
|
|
23
|
-
export const setSessionExpiryHandler = (handler: () => void) => {
|
|
24
|
-
sessionExpiryHandler = handler;
|
|
25
|
-
};
|
|
11
|
+
import { showSessionExpiredMessage } from '../components/AppWrapper';
|
|
26
12
|
|
|
27
13
|
/*------------------------------------------------------------------------*/
|
|
28
14
|
/* Stub Logic */
|
|
@@ -155,28 +141,10 @@ const visitServerEndpoint = async (
|
|
|
155
141
|
if (!response.body.success) {
|
|
156
142
|
// Session expired
|
|
157
143
|
if (response.body.code === ReactKitErrorCode.SessionExpired) {
|
|
158
|
-
|
|
159
|
-
if (sessionAlreadyExpired) {
|
|
160
|
-
// Never return (browser is already reloading)
|
|
161
|
-
await new Promise<{ [key in string]: any }>(() => {
|
|
162
|
-
// Promise that never returns
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
sessionAlreadyExpired = true;
|
|
166
|
-
|
|
167
|
-
// Show session expiration message
|
|
168
|
-
if (sessionExpiryHandler) {
|
|
169
|
-
// Use handler
|
|
170
|
-
sessionExpiryHandler();
|
|
171
|
-
} else {
|
|
172
|
-
// Fallback to alert
|
|
173
|
-
|
|
174
|
-
// eslint-disable-next-line no-alert
|
|
175
|
-
alert('Your session has expired. Please start over.');
|
|
176
|
-
}
|
|
144
|
+
showSessionExpiredMessage();
|
|
177
145
|
|
|
178
146
|
// Never return (don't continue execution)
|
|
179
|
-
await new Promise
|
|
147
|
+
await new Promise(() => {
|
|
180
148
|
// Promise that never returns
|
|
181
149
|
});
|
|
182
150
|
}
|