From 131e95ba9ec5242071941828509b78b584b10ab5 Mon Sep 17 00:00:00 2001 From: bloodyowl Date: Tue, 1 Oct 2024 17:54:04 +0200 Subject: [PATCH] Add limit on account close message field --- clients/banking/src/components/AccountClose.tsx | 11 ++++++++--- clients/banking/src/locales/de.json | 1 + clients/banking/src/locales/en.json | 1 + clients/banking/src/locales/es.json | 1 + clients/banking/src/locales/fi.json | 1 + clients/banking/src/locales/fr.json | 1 + clients/banking/src/locales/it.json | 1 + clients/banking/src/locales/nl.json | 1 + clients/banking/src/locales/pt.json | 1 + clients/banking/src/utils/validations.ts | 7 +++++++ 10 files changed, 23 insertions(+), 3 deletions(-) diff --git a/clients/banking/src/components/AccountClose.tsx b/clients/banking/src/components/AccountClose.tsx index 92e82aedf..6a50286b7 100644 --- a/clients/banking/src/components/AccountClose.tsx +++ b/clients/banking/src/components/AccountClose.tsx @@ -21,7 +21,7 @@ import { filterRejectionsToResult } from "@swan-io/lake/src/utils/gql"; import { trim } from "@swan-io/lake/src/utils/string"; import { Request } from "@swan-io/request"; import { translateError } from "@swan-io/shared-business/src/utils/i18n"; -import { useForm } from "@swan-io/use-form"; +import { combineValidators, useForm } from "@swan-io/use-form"; import { useEffect, useState } from "react"; import { StyleSheet, View } from "react-native"; import { match, P } from "ts-pattern"; @@ -29,7 +29,11 @@ import { AccountClosingDocument, AccountCountry, CloseAccountDocument } from ".. import { env } from "../utils/env"; import { formatNestedMessage, t } from "../utils/i18n"; import { Router } from "../utils/routes"; -import { validateNullableRequired, validateRequired } from "../utils/validations"; +import { + validateAccountReasonClose, + validateNullableRequired, + validateRequired, +} from "../utils/validations"; import { ErrorView } from "./ErrorView"; import { TransferRegularWizard } from "./TransferRegularWizard"; import { WizardLayout } from "./WizardLayout"; @@ -81,7 +85,7 @@ const AccountCloseReasonForm = ({ accountId }: { accountId: string }) => { message: { initialValue: "", sanitize: trim, - validate: validateRequired, + validate: combineValidators(validateRequired, validateAccountReasonClose), }, }); @@ -201,6 +205,7 @@ const AccountCloseReasonForm = ({ accountId }: { accountId: string }) => { ref={ref} multiline={true} numberOfLines={4} + maxCharCount={255} /> )} /> diff --git a/clients/banking/src/locales/de.json b/clients/banking/src/locales/de.json index ce3ffabed..156381619 100644 --- a/clients/banking/src/locales/de.json +++ b/clients/banking/src/locales/de.json @@ -399,6 +399,7 @@ "common.form.invalidEmail": "Ungültige E-Mail-Adresse", "common.form.invalidFile": "Ungültige Datei", "common.form.invalidFileLine": "Zeile {line} enthält ungültige oder fehlende Daten", + "common.form.invalidMessage": "Die Nachricht darf nicht mehr als {maxLength} Zeichen enthalten", "common.form.invalidName": "Ungültiger Name", "common.form.invalidPhoneNumber": "Ungültige Telefonnummer", "common.form.invalidRLMC": "Ungültiger RLMC", diff --git a/clients/banking/src/locales/en.json b/clients/banking/src/locales/en.json index 519e24231..6c249fc71 100644 --- a/clients/banking/src/locales/en.json +++ b/clients/banking/src/locales/en.json @@ -385,6 +385,7 @@ "common.form.chooseDateBefore": "Choose a date before {date}", "common.form.dateCannotBePast": "This date cannot be in the past", "common.form.dateIsNotWithinYear": "You can only schedule a transfer up to one year in advance.", + "common.form.invalidMessage": "Message should not exceed {maxLength} characters", "common.form.invalidAddressLine": "This field is limited to 38 characters", "common.form.invalidAmount": "Invalid amount", "common.form.invalidBulkAmount": "Line {line} has an invalid amount", diff --git a/clients/banking/src/locales/es.json b/clients/banking/src/locales/es.json index 41d9b2f09..e52ccaca3 100644 --- a/clients/banking/src/locales/es.json +++ b/clients/banking/src/locales/es.json @@ -399,6 +399,7 @@ "common.form.invalidEmail": "Correo electrónico no válido", "common.form.invalidFile": "Archivo no válido", "common.form.invalidFileLine": "La línea {line} contiene datos inválidos o le faltan datos", + "common.form.invalidMessage": "El mensaje no debe exceder {maxLength} caracteres", "common.form.invalidName": "Nombre inválido", "common.form.invalidPhoneNumber": "Este número de teléfono no es válido", "common.form.invalidRLMC": "RLMC inválido", diff --git a/clients/banking/src/locales/fi.json b/clients/banking/src/locales/fi.json index 2b775b492..bc2833415 100644 --- a/clients/banking/src/locales/fi.json +++ b/clients/banking/src/locales/fi.json @@ -399,6 +399,7 @@ "common.form.invalidEmail": "Sähköposti on väärässä muodossa", "common.form.invalidFile": "Virheellinen tiedosto", "common.form.invalidFileLine": "Rivi {line} sisältää virheellisiä tai puuttuvia tietoja", + "common.form.invalidMessage": "Viestin pituus ei saa ylittää {maxLength} merkkiä", "common.form.invalidName": "Nimi on väärässä muodossa", "common.form.invalidPhoneNumber": "Puhelinnumero on väärässä muodossa", "common.form.invalidRLMC": "Virheellinen RLMC", diff --git a/clients/banking/src/locales/fr.json b/clients/banking/src/locales/fr.json index 9e4d0e87c..ddd7638ff 100644 --- a/clients/banking/src/locales/fr.json +++ b/clients/banking/src/locales/fr.json @@ -399,6 +399,7 @@ "common.form.invalidEmail": "E-mail non valide", "common.form.invalidFile": "Fichier invalide", "common.form.invalidFileLine": "La ligne {line} contient des données invalides ou manquantes", + "common.form.invalidMessage": "Le message ne doit pas dépasser {maxLength} caractères", "common.form.invalidName": "Nom non valide", "common.form.invalidPhoneNumber": "Numéro de téléphone non valide", "common.form.invalidRLMC": "RLMC non valide", diff --git a/clients/banking/src/locales/it.json b/clients/banking/src/locales/it.json index 95fb41f6b..c4331e39d 100644 --- a/clients/banking/src/locales/it.json +++ b/clients/banking/src/locales/it.json @@ -399,6 +399,7 @@ "common.form.invalidEmail": "Questo indirizzo email non è valido", "common.form.invalidFile": "File non valido", "common.form.invalidFileLine": "La riga {line} contiene dati non validi o mancanti", + "common.form.invalidMessage": "Il messaggio non deve superare {maxLength} caratteri", "common.form.invalidName": "Nome non valido", "common.form.invalidPhoneNumber": "Questo numero di telefono non è valido", "common.form.invalidRLMC": "RLMC non valido", diff --git a/clients/banking/src/locales/nl.json b/clients/banking/src/locales/nl.json index 736d387e7..42c6f455b 100644 --- a/clients/banking/src/locales/nl.json +++ b/clients/banking/src/locales/nl.json @@ -399,6 +399,7 @@ "common.form.invalidEmail": "Dit e-mailadres is ongeldig", "common.form.invalidFile": "Ongeldig bestand", "common.form.invalidFileLine": "Regel {line} bevat ongeldige of ontbrekende gegevens", + "common.form.invalidMessage": "Bericht mag niet meer dan {maxLength} tekens bevatten", "common.form.invalidName": "Ongeldige naam", "common.form.invalidPhoneNumber": "Dit telefoonnummer is ongeldig", "common.form.invalidRLMC": "Ongeldige RLMC", diff --git a/clients/banking/src/locales/pt.json b/clients/banking/src/locales/pt.json index ada79361e..0385d7b8f 100644 --- a/clients/banking/src/locales/pt.json +++ b/clients/banking/src/locales/pt.json @@ -399,6 +399,7 @@ "common.form.invalidEmail": "Este e-mail é inválido", "common.form.invalidFile": "Ficheiro inválido", "common.form.invalidFileLine": "A linha {line} contém dados inválidos ou em falta", + "common.form.invalidMessage": "A mensagem não deve exceder {maxLength} caracteres", "common.form.invalidName": "Nome inválido", "common.form.invalidPhoneNumber": "Este número de telemóvel é inválido", "common.form.invalidRLMC": "RLMC inválido", diff --git a/clients/banking/src/utils/validations.ts b/clients/banking/src/utils/validations.ts index a2c12b03e..e3856b0dd 100644 --- a/clients/banking/src/utils/validations.ts +++ b/clients/banking/src/utils/validations.ts @@ -78,6 +78,13 @@ export const validateTransferReference: Validator = value => { } }; +export const validateAccountReasonClose: Validator = value => { + const maxLength = 255; + if (value.length > maxLength) { + return t("common.form.invalidMessage", { maxLength }); + } +}; + export const validateAccountNameLength: Validator = value => { const maxLength = 256; if (value.length > maxLength) {