From 4db56f8383d3968bc2109d2fa5d103813d70b46d Mon Sep 17 00:00:00 2001 From: Knee Cola Date: Sat, 22 Nov 2025 22:43:30 +0100 Subject: [PATCH] Rename 'iban' to 'ownerIBAN' in UserSettings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes: - Updated UserSettings interface: iban -> ownerIBAN - Updated userSettingsActions.ts: - Changed State type to use ownerIBAN - Updated FormSchema validation to reference ownerIBAN - Updated validation refinements to check ownerIBAN - Updated form data parsing to read ownerIBAN - Renamed normalizedIban to normalizedOwnerIBAN - Updated database write operations to use ownerIBAN - Updated UserSettingsForm.tsx: - Changed state tracking to use ownerIBAN - Updated validation check to reference ownerIBAN (cleanedOwnerIBAN) - Updated input field: id, name, and event handlers - Updated ViewLocationCard.tsx to use ownerIBAN instead of iban - Updated English translations: - iban-label -> owner-iban-label - iban-placeholder -> owner-iban-placeholder - iban-required -> owner-iban-required - iban-invalid -> owner-iban-invalid - Updated Croatian translations with corresponding ownerIBAN keys 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- app/lib/actions/userSettingsActions.ts | 22 +++++++++++----------- app/lib/db-types.ts | 4 ++-- app/ui/UserSettingsForm.tsx | 24 ++++++++++++------------ app/ui/ViewLocationCard.tsx | 2 +- messages/en.json | 8 ++++---- messages/hr.json | 8 ++++---- 6 files changed, 34 insertions(+), 34 deletions(-) diff --git a/app/lib/actions/userSettingsActions.ts b/app/lib/actions/userSettingsActions.ts index 08798b0..b767e79 100644 --- a/app/lib/actions/userSettingsActions.ts +++ b/app/lib/actions/userSettingsActions.ts @@ -17,7 +17,7 @@ export type State = { ownerName?: string[]; ownerStreet?: string[]; ownerTown?: string[]; - iban?: string[]; + ownerIBAN?: string[]; currency?: string[]; show2dCodeInMonthlyStatement?: string[]; }; @@ -32,7 +32,7 @@ const FormSchema = (t: IntlTemplateFn) => z.object({ ownerName: z.string().max(25).optional(), ownerStreet: z.string().max(25).optional(), ownerTown: z.string().max(27).optional(), - iban: z.string() + ownerIBAN: z.string() .optional() .refine( (val) => { @@ -41,7 +41,7 @@ const FormSchema = (t: IntlTemplateFn) => z.object({ const cleaned = val.replace(/\s/g, '').toUpperCase(); return IBAN.isValid(cleaned); }, - { message: t("iban-invalid") } + { message: t("owner-iban-invalid") } ), currency: z.string().optional(), show2dCodeInMonthlyStatement: z.boolean().optional().nullable(), @@ -75,17 +75,17 @@ const FormSchema = (t: IntlTemplateFn) => z.object({ }) .refine((data) => { if (data.show2dCodeInMonthlyStatement) { - if (!data.iban || data.iban.trim().length === 0) { + if (!data.ownerIBAN || data.ownerIBAN.trim().length === 0) { return false; } // Validate IBAN format when required - const cleaned = data.iban.replace(/\s/g, '').toUpperCase(); + const cleaned = data.ownerIBAN.replace(/\s/g, '').toUpperCase(); return IBAN.isValid(cleaned); } return true; }, { - message: t("iban-required"), - path: ["iban"], + message: t("owner-iban-required"), + path: ["ownerIBAN"], }) .refine((data) => { if (data.show2dCodeInMonthlyStatement) { @@ -139,7 +139,7 @@ export const updateUserSettings = withUser(async (user: AuthenticatedUser, prevS ownerName: formData.get('ownerName') || undefined, ownerStreet: formData.get('ownerStreet') || undefined, ownerTown: formData.get('ownerTown') || undefined, - iban: formData.get('iban') || undefined, + ownerIBAN: formData.get('ownerIBAN') || undefined, currency: formData.get('currency') || undefined, show2dCodeInMonthlyStatement: formData.get('generateTenantCode') === 'on', }); @@ -153,10 +153,10 @@ export const updateUserSettings = withUser(async (user: AuthenticatedUser, prevS }; } - const { ownerName, ownerStreet, ownerTown, iban, currency, show2dCodeInMonthlyStatement } = validatedFields.data; + const { ownerName, ownerStreet, ownerTown, ownerIBAN, currency, show2dCodeInMonthlyStatement } = validatedFields.data; // Normalize IBAN: remove spaces and convert to uppercase - const normalizedIban = iban ? iban.replace(/\s/g, '').toUpperCase() : null; + const normalizedOwnerIBAN = ownerIBAN ? ownerIBAN.replace(/\s/g, '').toUpperCase() : null; // Update the user settings in MongoDB const dbClient = await getDbClient(); @@ -167,7 +167,7 @@ export const updateUserSettings = withUser(async (user: AuthenticatedUser, prevS ownerName: ownerName || null, ownerStreet: ownerStreet || null, ownerTown: ownerTown || null, - iban: normalizedIban, + ownerIBAN: normalizedOwnerIBAN, currency: currency || null, show2dCodeInMonthlyStatement: show2dCodeInMonthlyStatement ?? false, }; diff --git a/app/lib/db-types.ts b/app/lib/db-types.ts index b78d0bf..617db8f 100644 --- a/app/lib/db-types.ts +++ b/app/lib/db-types.ts @@ -24,8 +24,8 @@ export interface UserSettings { ownerStreet?: string | null; /** owner town */ ownerTown?: string | null; - /** IBAN */ - iban?: string | null; + /** owner IBAN */ + ownerIBAN?: string | null; /** currency (ISO 4217) */ currency?: string | null; /** whether to show 2D code in monthly statement */ diff --git a/app/ui/UserSettingsForm.tsx b/app/ui/UserSettingsForm.tsx index c611d12..ba61319 100644 --- a/app/ui/UserSettingsForm.tsx +++ b/app/ui/UserSettingsForm.tsx @@ -30,7 +30,7 @@ const FormFields: FC = ({ userSettings, errors, message }) => { ownerName: userSettings?.ownerName ?? "", ownerStreet: userSettings?.ownerStreet ?? "", ownerTown: userSettings?.ownerTown ?? "", - iban: formatIban(userSettings?.iban) ?? "", + ownerIBAN: formatIban(userSettings?.ownerIBAN) ?? "", currency: userSettings?.currency ?? "EUR", }); @@ -39,8 +39,8 @@ const FormFields: FC = ({ userSettings, errors, message }) => { }; // Check if any required field is missing (clean IBAN of spaces for validation) - const cleanedIban = formValues.iban.replace(/\s/g, ''); - const hasMissingData = !formValues.ownerName || !formValues.ownerStreet || !formValues.ownerTown || !cleanedIban || !formValues.currency; + const cleanedOwnerIBAN = formValues.ownerIBAN.replace(/\s/g, ''); + const hasMissingData = !formValues.ownerName || !formValues.ownerStreet || !formValues.ownerTown || !cleanedOwnerIBAN || !formValues.currency; // Track whether to generate 2D code for tenant (use persisted value from database) const [show2dCodeInMonthlyStatement, setShow2dCodeInMonthlyStatement] = useState( @@ -146,21 +146,21 @@ const FormFields: FC = ({ userSettings, errors, message }) => {
handleInputChange("iban", e.target.value)} + defaultValue={formatIban(userSettings?.ownerIBAN)} + onChange={(e) => handleInputChange("ownerIBAN", e.target.value)} disabled={pending} /> -
- {errors?.iban && - errors.iban.map((error: string) => ( +
+ {errors?.ownerIBAN && + errors.ownerIBAN.map((error: string) => (

{error}

diff --git a/app/ui/ViewLocationCard.tsx b/app/ui/ViewLocationCard.tsx index eedc4a2..72e1a0d 100644 --- a/app/ui/ViewLocationCard.tsx +++ b/app/ui/ViewLocationCard.tsx @@ -31,7 +31,7 @@ export const ViewLocationCard:FC = ({location, userSettin Primatelj: userSettings?.ownerName ?? "", AdresaPrimatelja: userSettings?.ownerStreet ?? "", SjedistePrimatelja: userSettings?.ownerTown ?? "", - IBAN: userSettings?.iban ?? "", + IBAN: userSettings?.ownerIBAN ?? "", ModelPlacanja: "HR00", PozivNaBroj: `${yearMonth.year}-${yearMonth.month.toString().padStart(2,"0")}`, SifraNamjene: "", diff --git a/messages/en.json b/messages/en.json index efdd5e8..ace7dbc 100644 --- a/messages/en.json +++ b/messages/en.json @@ -195,8 +195,8 @@ "owner-street-placeholder": "enter your street and house number", "owner-town-label": "Your Postal Code and Town", "owner-town-placeholder": "enter your postal code and town", - "iban-label": "IBAN", - "iban-placeholder": "enter your IBAN", + "owner-iban-label": "IBAN", + "owner-iban-placeholder": "enter your IBAN", "currency-label": "Currency", "save-button": "Save", "cancel-button": "Cancel", @@ -204,8 +204,8 @@ "owner-name-required": "Name is mandatory", "owner-street-required": "Street is mandatory", "owner-town-required": "Town is mandatory", - "iban-required": "Valid IBAN is mandatory", - "iban-invalid": "Invalid IBAN format. Please enter a valid IBAN", + "owner-iban-required": "Valid IBAN is mandatory", + "owner-iban-invalid": "Invalid IBAN format. Please enter a valid IBAN", "currency-required": "Currency is mandatory", "validation-failed": "Validation failed. Please check the form and try again." }, diff --git a/messages/hr.json b/messages/hr.json index 0e7fb76..02293d1 100644 --- a/messages/hr.json +++ b/messages/hr.json @@ -194,8 +194,8 @@ "owner-street-placeholder": "unesite ulicu i kućni broj", "owner-town-label": "Poštanski broj i Grad", "owner-town-placeholder": "unesite poštanski broj i grad", - "iban-label": "IBAN", - "iban-placeholder": "unesite svoj IBAN", + "owner-iban-label": "IBAN", + "owner-iban-placeholder": "unesite svoj IBAN", "currency-label": "Valuta", "save-button": "Spremi", "cancel-button": "Odbaci", @@ -203,8 +203,8 @@ "owner-name-required": "Ime i prezime je obavezno", "owner-street-required": "Ulica je obavezna", "owner-town-required": "Grad je obavezan", - "iban-required": "Ispravan IBAN je obavezan", - "iban-invalid": "Neispravan IBAN format. Molimo unesite ispravan IBAN.", + "owner-iban-required": "Ispravan IBAN je obavezan", + "owner-iban-invalid": "Neispravan IBAN format. Molimo unesite ispravan IBAN.", "currency-required": "Valuta je obavezna", "validation-failed": "Validacija nije uspjela. Molimo provjerite formu i pokušajte ponovno." },