diff --git a/app/screens/apps_form/apps_form_component.tsx b/app/screens/apps_form/apps_form_component.tsx index 0e8c5bd72..82aa668f1 100644 --- a/app/screens/apps_form/apps_form_component.tsx +++ b/app/screens/apps_form/apps_form_component.tsx @@ -184,23 +184,34 @@ export default class AppsFormComponent extends PureComponent { updateErrors = (elements: DialogElement[], fieldErrors?: {[x: string]: string}, formError?: string): boolean => { let hasErrors = false; - - if (fieldErrors && - Object.keys(fieldErrors).length >= 0 && - checkIfErrorsMatchElements(fieldErrors as any, elements) - ) { - hasErrors = true; - this.setState({fieldErrors}); - } - + const state = {} as State; if (formError) { hasErrors = true; - this.setState({formError}); - if (this.scrollView?.current) { - this.scrollView.current.scrollTo({x: 0, y: 0}); + state.formError = formError; + } + + if (fieldErrors && Object.keys(fieldErrors).length >= 0) { + hasErrors = true; + if (checkIfErrorsMatchElements(fieldErrors as any, elements)) { + state.fieldErrors = fieldErrors; + } else if (!state.formError) { + const field = Object.keys(fieldErrors)[0]; + state.formError = this.context.intl.formatMessage({ + id: 'apps.error.responses.unknown_field_error', + defaultMessage: 'Received an error for an unkown field. Field name: `{field}`. Error: `{error}`.', + }, { + field, + error: fieldErrors[field], + }); } } + if (hasErrors) { + this.setState(state); + if (state.formError && this.scrollView?.current) { + this.scrollView.current.scrollTo({x: 0, y: 0}); + } + } return hasErrors; } diff --git a/assets/base/i18n/en.json b/assets/base/i18n/en.json index 0cd22db76..49191c366 100644 --- a/assets/base/i18n/en.json +++ b/assets/base/i18n/en.json @@ -45,6 +45,7 @@ "apps.error.responses.navigate.no_url": "Response type is `navigate`, but no url was included in response.", "apps.error.responses.unexpected_error": "Received an unexpected error.", "apps.error.responses.unexpected_type": "App response type was not expected. Response type: {type}.", + "apps.error.responses.unknown_field_error": "Received an error for an unkown field. Field name: `{field}`. Error: `{error}`.", "apps.error.responses.unknown_type": "App response type not supported. Response type: {type}.", "apps.error.unknown": "Unknown error occurred.", "apps.suggestion.dynamic.error": "Dynamic select error",