From 4dfb9fb60cf7d7f776cd502180e524a5c3ea1f0c Mon Sep 17 00:00:00 2001 From: Jason Frerich Date: Fri, 5 Aug 2022 05:12:01 -0500 Subject: [PATCH] [Gekidou MM-45178] Improve wording about url not being a valid one (#6449) * if the API client returns and error, throw a new error with better descriptive text for the user * add intl to message * move happy path code into try block --- app/managers/network_manager.ts | 18 +++++++++++++++--- assets/base/i18n/en.json | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/managers/network_manager.ts b/app/managers/network_manager.ts index 9e8c46ef2..bd19a21a2 100644 --- a/app/managers/network_manager.ts +++ b/app/managers/network_manager.ts @@ -14,6 +14,7 @@ import UserAgent from 'react-native-user-agent'; import LocalConfig from '@assets/config.json'; import {Client} from '@client/rest'; import * as ClientConstants from '@client/rest/constants'; +import ClientError from '@client/rest/error'; import {CERTIFICATE_ERRORS} from '@constants/network'; import ManagedApp from '@init/managed_app'; import {logError} from '@utils/log'; @@ -77,9 +78,20 @@ class NetworkManager { public createClient = async (serverUrl: string, bearerToken?: string) => { const config = await this.buildConfig(); - const {client} = await getOrCreateAPIClient(serverUrl, config, this.clientErrorEventHandler); - const csrfToken = await getCSRFFromCookie(serverUrl); - this.clients[serverUrl] = new Client(client, serverUrl, bearerToken, csrfToken); + try { + const {client} = await getOrCreateAPIClient(serverUrl, config, this.clientErrorEventHandler); + const csrfToken = await getCSRFFromCookie(serverUrl); + this.clients[serverUrl] = new Client(client, serverUrl, bearerToken, csrfToken); + } catch (error) { + throw new ClientError(serverUrl, { + message: 'Can’t find this server. Check spelling and URL format.', + intl: { + id: 'apps.error.network.no_server', + defaultMessage: 'Can’t find this server. Check spelling and URL format.', + }, + url: serverUrl, + }); + } return this.clients[serverUrl]; }; diff --git a/assets/base/i18n/en.json b/assets/base/i18n/en.json index 6a140cd87..8c40c9c20 100644 --- a/assets/base/i18n/en.json +++ b/assets/base/i18n/en.json @@ -46,6 +46,7 @@ "apps.error.form.submit.pretext": "There has been an error submitting the modal. Contact the app developer. Details: {details}", "apps.error.lookup.error_preparing_request": "Error preparing lookup request: {errorMessage}", "apps.error.malformed_binding": "This binding is not properly formed. Contact the App developer.", + "apps.error.network.no_server": "Can’t find this server. Check spelling and URL format.", "apps.error.parser": "Parsing error: {error}", "apps.error.parser.empty_value": "Empty values are not allowed.", "apps.error.parser.execute_non_leaf": "You must select a subcommand.",