From b267b0b884d001af27b675a0d7b77d25d8091e42 Mon Sep 17 00:00:00 2001 From: Jim O'Donnell Date: Thu, 6 Jul 2023 14:26:54 +0100 Subject: [PATCH] Bugfix: defer 'change' events on sign out Wait for API calls to resolve before emitting `change` events on sign out. Otherwise, `change` is fired while we still have a signed-in session in Panoptes. --- lib/auth.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/auth.js b/lib/auth.js index 62a320f..aac9704 100644 --- a/lib/auth.js +++ b/lib/auth.js @@ -285,10 +285,8 @@ const authClient = new Model({ console.log('Disabling account'); const user = await this.checkCurrent(); if (user) { - await user.delete(); this._deleteBearerToken(); - this._currentUserPromise = Promise.resolve(null); - await this._currentUserPromise; + this._currentUserPromise = await user.delete().then(() => null); this.emit('change', this._currentUserPromise); console.info('Disabled account'); return null; @@ -312,10 +310,9 @@ const authClient = new Model({ }; try { - makeCredentialHTTPRequest('DELETE', url, null, deleteHeaders); this._deleteBearerToken(); - this._currentUserPromise = Promise.resolve(null); - await this._currentUserPromise; + this._currentUserPromise = await makeCredentialHTTPRequest('DELETE', url, null, deleteHeaders) + .then(() => null); this.emit('change', this._currentUserPromise); console.info('Signed out'); return null;