feat: add validation for Revolut profile name format

- Add ownerRevolutProfileName field validation when enableRevolutPayment is true
- Validate profile name must start with '@' and contain only letters and numbers
- Add required field validation for Revolut profile name
- Add English and Croatian error messages for validation failures
- Update State type to include ownerRevolutProfileName errors

Validation regex: /^@[a-zA-Z0-9]+$/
Valid examples: @john123, @ivan, @user2024

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-24 15:39:37 +01:00
parent c4c9b409d0
commit 4e9e5ca8d2
3 changed files with 25 additions and 0 deletions

View File

@@ -19,6 +19,7 @@ export type State = {
ownerTown?: string[];
ownerIBAN?: string[];
currency?: string[];
ownerRevolutProfileName?: string[];
};
message?: string | null;
success?: boolean;
@@ -96,6 +97,26 @@ const FormSchema = (t: IntlTemplateFn) => z.object({
}, {
message: t("currency-required"),
path: ["currency"],
})
.refine((data) => {
if (data.enableRevolutPayment) {
return !!data.ownerRevolutProfileName && data.ownerRevolutProfileName.trim().length > 0;
}
return true;
}, {
message: t("owner-revolut-profile-required"),
path: ["ownerRevolutProfileName"],
})
.refine((data) => {
if (data.enableRevolutPayment && data.ownerRevolutProfileName) {
const profileName = data.ownerRevolutProfileName.trim();
// Must start with @ and contain only English letters and numbers
return /^@[a-zA-Z0-9]+$/.test(profileName);
}
return true;
}, {
message: t("owner-revolut-profile-invalid"),
path: ["ownerRevolutProfileName"],
});
/**

View File

@@ -232,6 +232,8 @@
"owner-iban-required": "Valid IBAN is mandatory",
"owner-iban-invalid": "Invalid IBAN format. Please enter a valid IBAN",
"currency-required": "Currency is mandatory",
"owner-revolut-profile-required": "Revolut profile name is mandatory",
"owner-revolut-profile-invalid": "Invalid Revolut profile format. Must start with '@' and contain only English letters and numbers (e.g., '@john123')",
"validation-failed": "Validation failed. Please check the form and try again."
}
}

View File

@@ -236,6 +236,8 @@
"owner-iban-required": "Ispravan IBAN je obavezan",
"owner-iban-invalid": "Neispravan IBAN format. Molimo unesite ispravan IBAN.",
"currency-required": "Valuta je obavezna",
"owner-revolut-profile-required": "Naziv Revolut profila je obavezan",
"owner-revolut-profile-invalid": "Neispravan format Revolut profila. Mora počinjati sa '@' i sadržavati samo slova i brojeve (npr. '@ivan123')",
"validation-failed": "Validacija nije uspjela. Molimo provjerite formu i pokušajte ponovno."
},
"payment-additional-notes": "VAŽNO: da bi upute za uplatu bile prikazane podstanaru, morate tu ovu opciju uključiti i u postavkama pripadajuće nekretnine."