Try to catch unhandled exception (#19360)
This commit is contained in:
parent
4d7fcb7359
commit
3097781882
3 changed files with 39 additions and 6 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import { getUserDataAndCsrfToken } from '@utilities/getUserDataAndCsrfToken';
|
||||
import { getUserDataAndCsrfTokenSafely } from '@utilities/getUserDataAndCsrfToken';
|
||||
|
||||
getUserDataAndCsrfToken().then(({ currentUser }) => {
|
||||
getUserDataAndCsrfTokenSafely().then(({ currentUser }) => {
|
||||
const currentUserId = currentUser && currentUser.id;
|
||||
|
||||
document.querySelectorAll('.bookmark-button').forEach((button) => {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import { getUserDataAndCsrfToken } from '../getUserDataAndCsrfToken';
|
||||
import {
|
||||
getUserDataAndCsrfToken,
|
||||
getUserDataAndCsrfTokenSafely,
|
||||
} from '../getUserDataAndCsrfToken';
|
||||
|
||||
const ERROR_MESSAGE = "Couldn't find user data on page.";
|
||||
|
||||
|
|
@ -54,3 +57,16 @@ describe('getUserDataAndCsrfToken', () => {
|
|||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('getUserDataAndCsrfTokenSafely', () => {
|
||||
afterEach(() => {
|
||||
document.head.innerHTML = '';
|
||||
document.body.removeAttribute('data-user');
|
||||
});
|
||||
|
||||
test('should not reject if no user or csrf token found.', async () => {
|
||||
await expect(getUserDataAndCsrfTokenSafely(document)).resolves.toEqual(
|
||||
expect.anything(),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -4,13 +4,23 @@ export function getCsrfToken() {
|
|||
return element !== null ? element.content : undefined;
|
||||
}
|
||||
|
||||
const getWaitOnUserDataHandler = ({ resolve, reject, waitTime = 20 }) => {
|
||||
const getWaitOnUserDataHandler = ({
|
||||
resolve,
|
||||
reject,
|
||||
safe = false,
|
||||
waitTime = 20,
|
||||
}) => {
|
||||
let totalTimeWaiting = 0;
|
||||
|
||||
return function waitingOnUserData() {
|
||||
if (totalTimeWaiting === 3000) {
|
||||
reject(new Error("Couldn't find user data on page."));
|
||||
return;
|
||||
if (!safe) {
|
||||
reject(new Error("Couldn't find user data on page."));
|
||||
return;
|
||||
}
|
||||
resolve({ user, csrfToken });
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
const csrfToken = getCsrfToken(document);
|
||||
|
|
@ -28,6 +38,13 @@ const getWaitOnUserDataHandler = ({ resolve, reject, waitTime = 20 }) => {
|
|||
};
|
||||
};
|
||||
|
||||
export function getUserDataAndCsrfTokenSafely() {
|
||||
return new Promise((resolve, reject) => {
|
||||
const safe = true;
|
||||
getWaitOnUserDataHandler({ resolve, reject, safe })();
|
||||
});
|
||||
}
|
||||
|
||||
export function getUserDataAndCsrfToken() {
|
||||
return new Promise((resolve, reject) => {
|
||||
getWaitOnUserDataHandler({ resolve, reject })();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue