Merge pull request #249 from cosmos/formgen-hexa-variant

Add hexa support to FieldString
This commit is contained in:
Abel Fernández
2024-08-01 15:47:24 +02:00
committed by GitHub
@@ -1,6 +1,7 @@
import { FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
import { prettyFieldName } from "@/lib/form";
import { fromHex } from "@cosmjs/encoding";
import * as z from "zod";
import type { FieldProps } from "./types";
@@ -9,11 +10,19 @@ const isFieldString = (fieldName: string) =>
const isOptionalFieldString = (fieldName: string) => fieldName === "label";
const isHexFieldString = (fieldName: string) => fieldName === "salt";
export const getFieldString = (fieldName: string) =>
isFieldString(fieldName) || isOptionalFieldString(fieldName) ? FieldString : null;
isFieldString(fieldName) || isOptionalFieldString(fieldName) || isHexFieldString(fieldName)
? FieldString
: null;
export const getFieldStringSchema = (fieldName: string) => {
if (!isFieldString(fieldName) && !isOptionalFieldString(fieldName)) {
if (
!isFieldString(fieldName) &&
!isOptionalFieldString(fieldName) &&
!isHexFieldString(fieldName)
) {
return null;
}
@@ -30,6 +39,21 @@ export const getFieldStringSchema = (fieldName: string) => {
return z.optional(zodString);
}
if (isHexFieldString(fieldName)) {
return zodString.transform((val, ctx) => {
try {
return fromHex(val);
} catch {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: "Must be an hexadecimal string",
});
return z.NEVER;
}
});
}
return null;
};