From 7ccc218a98c9942c220bab5ca37df4fee4af9cb4 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 2 Aug 2019 15:21:53 +0100 Subject: [PATCH] Tweak control flow to avoid duplicate terms prompts --- src/IdentityAuthClient.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/IdentityAuthClient.js b/src/IdentityAuthClient.js index 7b36a4f4a0..755205d5e2 100644 --- a/src/IdentityAuthClient.js +++ b/src/IdentityAuthClient.js @@ -17,7 +17,7 @@ limitations under the License. import { SERVICE_TYPES } from 'matrix-js-sdk'; import MatrixClientPeg from './MatrixClientPeg'; -import { Service, startTermsFlow } from './Terms'; +import { Service, startTermsFlow, TermsNotSignedError } from './Terms'; export default class IdentityAuthClient { constructor() { @@ -43,17 +43,26 @@ export default class IdentityAuthClient { if (!token) { token = await this.registerForToken(); - this.accessToken = token; - window.localStorage.setItem("mx_is_access_token", token); + if (token) { + this.accessToken = token; + window.localStorage.setItem("mx_is_access_token", token); + } + return token; } try { await this._checkToken(token); } catch (e) { + if (e instanceof TermsNotSignedError) { + // Retrying won't help this + throw e; + } // Retry in case token expired token = await this.registerForToken(); - this.accessToken = token; - window.localStorage.setItem("mx_is_access_token", token); + if (token) { + this.accessToken = token; + window.localStorage.setItem("mx_is_access_token", token); + } } return token; @@ -89,8 +98,8 @@ export default class IdentityAuthClient { await MatrixClientPeg.get().registerWithIdentityServer(hsOpenIdToken); await this._checkToken(identityAccessToken); return identityAccessToken; - } catch (err) { - if (err.cors === "rejected" || err.httpStatus === 404) { + } catch (e) { + if (e.cors === "rejected" || e.httpStatus === 404) { // Assume IS only supports deprecated v1 API for now // TODO: Remove this path once v2 is only supported version // See https://github.com/vector-im/riot-web/issues/10443 @@ -98,7 +107,7 @@ export default class IdentityAuthClient { this.authEnabled = false; return; } - console.error(err); + throw e; } } }