From 001ad2e723b9cf3442f4b64d95b16d8d5635a534 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Tue, 13 Oct 2026 20:47:02 +0300 Subject: [PATCH] refactor: derive payment-system options from schema tuple (#58) --- src/entities/bank-card/model/form.schema.ts | 4 +++- src/entities/bank-card/ui/BankCardForm/BankCardFields.vm.ts | 5 ++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/entities/bank-card/model/form.schema.ts b/src/entities/bank-card/model/form.schema.ts index c5aa609..db9c797 100644 --- a/src/entities/bank-card/model/form.schema.ts +++ b/src/entities/bank-card/model/form.schema.ts @@ -6,6 +6,7 @@ import { calendarDate } from "@/shared/lib"; import { bankToday } from "./form-validation"; import { moneyCents } from "./money"; const MAX_CARD_NAME_LENGTH = 100; +const paymentSystemValues = ["mir", "visa", "mastercard"] as const; const MIN_BALANCE_KOPECKS = -9_223_372_036_854_775_808n; const MAX_BALANCE_KOPECKS = 9_223_372_036_854_775_807n; @@ -63,7 +64,7 @@ const bankCardSchema = z.object({ openingBalance: moneySchema, openingDate: bankDateSchema, paymentSystem: z - .enum(["", "mir", "visa", "mastercard"], { + .enum(["", ...paymentSystemValues], { error: validationMessage("bank.validation.paymentSystem"), }) .optional(), @@ -75,5 +76,6 @@ export { bankCardSchema, type BankCardValues, bankDateSchema, + paymentSystemValues, positiveMoneySchema, }; diff --git a/src/entities/bank-card/ui/BankCardForm/BankCardFields.vm.ts b/src/entities/bank-card/ui/BankCardForm/BankCardFields.vm.ts index 3238e5b..0dc5c32 100644 --- a/src/entities/bank-card/ui/BankCardForm/BankCardFields.vm.ts +++ b/src/entities/bank-card/ui/BankCardForm/BankCardFields.vm.ts @@ -1,8 +1,7 @@ import { useController, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import type { BankCardValues } from "../../model/form.schema"; - +import { type BankCardValues, paymentSystemValues } from "../../model/form.schema"; import { bankDateField } from "../bankDateField"; function useBankCardFieldsVm() { @@ -16,7 +15,7 @@ function useBankCardFieldsVm() { const { field: openingDateField } = useController({ control, name: "openingDate" }); const { field: paymentSystemField } = useController({ control, name: "paymentSystem" }); - const paymentSystems = ["mir", "visa", "mastercard"].map(value => ({ + const paymentSystems = paymentSystemValues.map(value => ({ label: t(`bank.paymentSystems.${value}`), value, })); -- 2.54.0