From c44ae2df4d47b6fb5787cdc50ca01dbf7e12aa1d Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 23 Aug 2019 11:58:04 -0600 Subject: [PATCH] Treat 404 errors on IS as having no terms Fixes https://github.com/vector-im/riot-web/issues/10634 --- src/components/views/settings/SetIdServer.js | 46 ++++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/src/components/views/settings/SetIdServer.js b/src/components/views/settings/SetIdServer.js index e7aa22527d..ddd246d928 100644 --- a/src/components/views/settings/SetIdServer.js +++ b/src/components/views/settings/SetIdServer.js @@ -153,31 +153,17 @@ export default class SetIdServer extends React.Component { // Double check that the identity server even has terms of service. const terms = await MatrixClientPeg.get().getTerms(SERVICE_TYPES.IS, fullUrl); if (!terms || !terms["policies"] || Object.keys(terms["policies"]).length <= 0) { - const QuestionDialog = sdk.getComponent("views.dialogs.QuestionDialog"); - Modal.createTrackedDialog('No Terms Warning', '', QuestionDialog, { - title: _t("Identity server has no terms of service"), - description: ( -
- - {_t("The identity server you have chosen does not have any terms of service.")} - - -  {_t("Only continue if you trust the owner of the server.")} - -
- ), - button: _t("Continue"), - onFinished: async (confirmed) => { - if (!confirmed) return; - this._saveIdServer(fullUrl); - }, - }); + this._showNoTermsWarning(fullUrl); return; } this._saveIdServer(fullUrl); } catch (e) { console.error(e); + if (e.cors === "rejected" || e.httpStatus === 404) { + this._showNoTermsWarning(fullUrl); + return; + } errStr = _t("Terms of service not accepted or the identity server is invalid."); } } @@ -190,6 +176,28 @@ export default class SetIdServer extends React.Component { }); }; + _showNoTermsWarning(fullUrl) { + const QuestionDialog = sdk.getComponent("views.dialogs.QuestionDialog"); + Modal.createTrackedDialog('No Terms Warning', '', QuestionDialog, { + title: _t("Identity server has no terms of service"), + description: ( +
+ + {_t("The identity server you have chosen does not have any terms of service.")} + + +  {_t("Only continue if you trust the owner of the server.")} + +
+ ), + button: _t("Continue"), + onFinished: async (confirmed) => { + if (!confirmed) return; + this._saveIdServer(fullUrl); + }, + }); + }; + _onDisconnectClicked = async () => { this.setState({disconnectBusy: true}); try {