From 26ffdbde91be7c99b9f45821813c3c281bfa4ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Espino=20Garc=C3=ADa?= Date: Mon, 29 Mar 2021 13:04:08 +0200 Subject: [PATCH] Make app command parse error message more readable (#5238) * Make app command parse error message more readable * Update i18n --- .../app_command_parser/app_command_parser.ts | 14 ++------------ .../app_command_parser_dependencies.ts | 9 +++++++++ assets/base/i18n/en.json | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/app/components/autocomplete/slash_suggestion/app_command_parser/app_command_parser.ts b/app/components/autocomplete/slash_suggestion/app_command_parser/app_command_parser.ts index 885d351a9..875bd6ffb 100644 --- a/app/components/autocomplete/slash_suggestion/app_command_parser/app_command_parser.ts +++ b/app/components/autocomplete/slash_suggestion/app_command_parser/app_command_parser.ts @@ -37,6 +37,7 @@ import { getChannelByNameAndTeamName, getCurrentTeam, selectChannelByName, + errorMessage as parserErrorMessage, } from './app_command_parser_dependencies'; export type Store = { @@ -100,17 +101,6 @@ export class ParsedCommand { return this; }; - errorMessage = (): string => { - return this.intl.formatMessage({ - id: 'apps.error.parser', - defaultMessage: 'Parsing error: {error}.\n```\n{command}\n{space}^\n```', - }, { - error: this.error, - command: this.command, - space: ' '.repeat(this.i), - }); - } - // matchBinding finds the closest matching command binding. matchBinding = async (commandBindings: AppBinding[], autocompleteMode = false): Promise => { if (commandBindings.length === 0) { @@ -568,7 +558,7 @@ export class AppCommandParser { parsed = await parsed.matchBinding(commandBindings, false); parsed = parsed.parseForm(false); if (parsed.state === ParseState.Error) { - return {call: null, errorMessage: parsed.errorMessage()}; + return {call: null, errorMessage: parserErrorMessage(this.intl, parsed.error, parsed.command, parsed.i)}; } const missing = this.getMissingFields(parsed); diff --git a/app/components/autocomplete/slash_suggestion/app_command_parser/app_command_parser_dependencies.ts b/app/components/autocomplete/slash_suggestion/app_command_parser/app_command_parser_dependencies.ts index 02a71206d..7179cb77c 100644 --- a/app/components/autocomplete/slash_suggestion/app_command_parser/app_command_parser_dependencies.ts +++ b/app/components/autocomplete/slash_suggestion/app_command_parser/app_command_parser_dependencies.ts @@ -76,3 +76,12 @@ export const displayError = (intl: typeof intlShape, body: string) => { }); Alert.alert(title, body); }; + +export const errorMessage = (intl: typeof intlShape, error: string, _command: string, _position: number): string => { // eslint-disable-line @typescript-eslint/no-unused-vars + return intl.formatMessage({ + id: 'apps.error.parser', + defaultMessage: 'Parsing error: {error}', + }, { + error, + }); +}; diff --git a/assets/base/i18n/en.json b/assets/base/i18n/en.json index 7cd3160ea..e0530fe53 100644 --- a/assets/base/i18n/en.json +++ b/assets/base/i18n/en.json @@ -24,7 +24,7 @@ "apps.error.form.refresh_no_refresh": "Called refresh on no refresh field.", "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.parser": "Parsing error: {error}.\n```\n{command}\n{space}^\n```", + "apps.error.parser": "Parsing error: {error}", "apps.error.parser.empty_value": "empty values are not allowed", "apps.error.parser.missing_binding": "Missing command bindings.", "apps.error.parser.missing_call": "Missing binding call.",