From cd03fb6e841b2d8d66ea3e3167237f80ba291f7c Mon Sep 17 00:00:00 2001 From: IshaVenikar <145848618+IshaVenikar@users.noreply.github.com> Date: Fri, 19 Apr 2024 11:13:35 +0530 Subject: [PATCH] Add custom form validation messages (#106) * Fix empty fields and url error msg * Use constants for error msgs --- src/screens/AddNetwork.tsx | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/src/screens/AddNetwork.tsx b/src/screens/AddNetwork.tsx index 23cf623..daafb7a 100644 --- a/src/screens/AddNetwork.tsx +++ b/src/screens/AddNetwork.tsx @@ -24,23 +24,32 @@ import { COSMOS, EIP155, CHAINID_DEBOUNCE_DELAY } from '../utils/constants'; import { getCosmosAccounts } from '../utils/accounts'; import ETH_CHAINS from '../assets/ethereum-chains.json'; +const EMPTY_FIELD_ERROR = 'Field cannot be empty'; +const INVALID_URL_ERROR = 'Invalid URL'; + const ethNetworkDataSchema = z.object({ - chainId: z.string().min(1), - networkName: z.string().min(1), - rpcUrl: z.string().url(), - blockExplorerUrl: z.string().url().or(z.literal('')), - coinType: z.string().regex(/^\d+$/).min(1), - currencySymbol: z.string().min(1), + chainId: z.string().nonempty({ message: EMPTY_FIELD_ERROR }), + networkName: z.string().nonempty({ message: EMPTY_FIELD_ERROR }), + rpcUrl: z.string().url({ message: INVALID_URL_ERROR }), + blockExplorerUrl: z + .string() + .url({ message: INVALID_URL_ERROR }) + .or(z.literal('')), + coinType: z.string().nonempty({ message: EMPTY_FIELD_ERROR }).regex(/^\d+$/), + currencySymbol: z.string().nonempty({ message: EMPTY_FIELD_ERROR }), }); const cosmosNetworkDataSchema = z.object({ - chainId: z.string().min(1), - networkName: z.string().min(1), - rpcUrl: z.string().url(), - blockExplorerUrl: z.string().url().or(z.literal('')), - coinType: z.string().regex(/^\d+$/).min(1), - nativeDenom: z.string().min(1), - addressPrefix: z.string().min(1), + chainId: z.string().nonempty({ message: EMPTY_FIELD_ERROR }), + networkName: z.string().nonempty({ message: EMPTY_FIELD_ERROR }), + rpcUrl: z.string().url({ message: INVALID_URL_ERROR }), + blockExplorerUrl: z + .string() + .url({ message: INVALID_URL_ERROR }) + .or(z.literal('')), + coinType: z.string().nonempty({ message: EMPTY_FIELD_ERROR }).regex(/^\d+$/), + nativeDenom: z.string().nonempty({ message: EMPTY_FIELD_ERROR }), + addressPrefix: z.string().nonempty({ message: EMPTY_FIELD_ERROR }), }); const AddNetwork = () => {