fix(dashboard-v2): fix possible race condition

This commit is contained in:
Michał Leszczyk 2022-03-25 10:53:16 +01:00
parent c7b8c31dbb
commit be82050b86
No known key found for this signature in database
GPG Key ID: FA123CA8BAA2FBF4
1 changed files with 14 additions and 4 deletions

View File

@ -19,18 +19,25 @@ const EmailConfirmationPage = ({ location }) => {
const [state, setState] = useState(State.Pure);
useEffect(() => {
const controller = new AbortController();
let timer;
async function confirm(token) {
try {
await accountsService.get("user/confirm", { searchParams: { token } });
await accountsService.get("user/confirm", {
signal: controller.signal,
searchParams: { token },
});
timer = setTimeout(() => {
navigate("/");
}, 3000);
setState(State.Success);
} catch {
setState(State.Failure);
} catch (err) {
// Don't show an error message if request was aborted due to `token` changing.
if (err.code !== DOMException.ABORT_ERR) {
setState(State.Failure);
}
}
}
@ -38,7 +45,10 @@ const EmailConfirmationPage = ({ location }) => {
confirm(token);
}
return () => clearTimeout(timer);
return () => {
controller.abort();
clearTimeout(timer);
};
}, [token]);
return (