From f3d8129a130096b8d552c554cf0004816d711fdb Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Tue, 27 Jun 2023 22:20:41 -0400 Subject: [PATCH] fix: Await logout --- app/scenes/UserDelete.tsx | 2 +- app/stores/AuthStore.ts | 9 ++++++++- app/utils/ApiClient.ts | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/scenes/UserDelete.tsx b/app/scenes/UserDelete.tsx index 115d02cdf..13ce212e6 100644 --- a/app/scenes/UserDelete.tsx +++ b/app/scenes/UserDelete.tsx @@ -45,7 +45,7 @@ function UserDelete() { async (data: FormData) => { try { await auth.deleteUser(data); - auth.logout(); + await auth.logout(); } catch (error) { showToast(error.message, { type: "error", diff --git a/app/stores/AuthStore.ts b/app/stores/AuthStore.ts index c419b5668..6e6131624 100644 --- a/app/stores/AuthStore.ts +++ b/app/stores/AuthStore.ts @@ -12,6 +12,7 @@ import User from "~/models/User"; import env from "~/env"; import { client } from "~/utils/ApiClient"; import Desktop from "~/utils/Desktop"; +import Logger from "~/utils/Logger"; const AUTH_STORE = "AUTH_STORE"; const NO_REDIRECT_PATHS = ["/", "/create", "/home", "/logout"]; @@ -322,7 +323,7 @@ export default class AuthStore { } // invalidate authentication token on server - client.post(`/auth.delete`); + const promise = client.post(`/auth.delete`); // remove authentication token itself removeCookie("accessToken", { @@ -349,5 +350,11 @@ export default class AuthStore { // Tell the host application we logged out, if any – allows window cleanup. Desktop.bridge?.onLogout?.(); this.rootStore.logout(); + + try { + await promise; + } catch (err) { + Logger.error("Failed to delete authentication", err); + } }; } diff --git a/app/utils/ApiClient.ts b/app/utils/ApiClient.ts index 5ba70c26a..500252ce8 100644 --- a/app/utils/ApiClient.ts +++ b/app/utils/ApiClient.ts @@ -147,7 +147,7 @@ class ApiClient { // Handle 401, log out user if (response.status === 401) { - stores.auth.logout(); + await stores.auth.logout(); return; } @@ -178,7 +178,7 @@ class ApiClient { if (response.status === 403) { if (error.error === "user_suspended") { - stores.auth.logout(); + await stores.auth.logout(); return; }