feat(i18n): localize asset validation messages
This commit is contained in:
@@ -34,6 +34,7 @@ export default async function EditAssetPage({
|
||||
recipients={recipients}
|
||||
asset={asset as unknown as AssetWithAssignment}
|
||||
formCopy={copy.form}
|
||||
schemaCopy={copy.schema}
|
||||
statusCopy={copy.status}
|
||||
submitButtonCopy={dictionary.common.submitButton}
|
||||
/>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import type { Dictionary } from "@/i18n/dictionaries"
|
||||
import type { AssetSchemaCopy } from "@/schemas/asset.schema"
|
||||
|
||||
export type AssetListCopy = Dictionary["inventory"]["assets"]["list"]
|
||||
export type AssetFormCopy = Dictionary["inventory"]["assets"]["form"]
|
||||
export type AssetStatusCopy = Dictionary["inventory"]["assets"]["status"]
|
||||
export type AssetFallbackCopy = Dictionary["inventory"]["assets"]["fallback"]
|
||||
export type { AssetSchemaCopy }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import { zodResolver } from "@hookform/resolvers/zod"
|
||||
import { useRouter } from "next/navigation"
|
||||
import { useMemo } from "react"
|
||||
import { useForm } from "react-hook-form"
|
||||
import { toast } from "sonner"
|
||||
import { updateAssetAction } from "@/actions/asset.actions"
|
||||
@@ -11,8 +12,8 @@ import {
|
||||
} from "@/components/forms/submitButton"
|
||||
import { ITEM_STATUS } from "@/lib/constants"
|
||||
import {
|
||||
buildUpdateAssetSchema,
|
||||
type UpdateAssetFormType,
|
||||
updateAssetSchema,
|
||||
} from "@/schemas/asset.schema"
|
||||
import type {
|
||||
AssetWithAssignment,
|
||||
@@ -21,13 +22,18 @@ import type {
|
||||
UpdateAssetStatus,
|
||||
} from "@/types"
|
||||
|
||||
import type { AssetFormCopy, AssetStatusCopy } from "./asset.copy"
|
||||
import type {
|
||||
AssetFormCopy,
|
||||
AssetSchemaCopy,
|
||||
AssetStatusCopy,
|
||||
} from "./asset.copy"
|
||||
|
||||
interface EditAssetFormProps {
|
||||
asset: AssetWithAssignment
|
||||
items: Item[]
|
||||
recipients: Recipient[]
|
||||
formCopy: AssetFormCopy
|
||||
schemaCopy: AssetSchemaCopy
|
||||
statusCopy: AssetStatusCopy
|
||||
submitButtonCopy: SubmitButtonCopy
|
||||
}
|
||||
@@ -37,10 +43,12 @@ export default function EditAssetForm({
|
||||
items,
|
||||
recipients,
|
||||
formCopy,
|
||||
schemaCopy,
|
||||
statusCopy,
|
||||
submitButtonCopy,
|
||||
}: EditAssetFormProps) {
|
||||
const router = useRouter()
|
||||
const schema = useMemo(() => buildUpdateAssetSchema(schemaCopy), [schemaCopy])
|
||||
|
||||
const {
|
||||
register,
|
||||
@@ -49,7 +57,7 @@ export default function EditAssetForm({
|
||||
formState: { errors, isSubmitting, isSubmitSuccessful },
|
||||
watch,
|
||||
} = useForm<UpdateAssetFormType>({
|
||||
resolver: zodResolver(updateAssetSchema),
|
||||
resolver: zodResolver(schema),
|
||||
defaultValues: {
|
||||
id: asset.id,
|
||||
itemId: asset.itemId ?? undefined,
|
||||
@@ -81,7 +89,7 @@ export default function EditAssetForm({
|
||||
}
|
||||
|
||||
if (response?.success) {
|
||||
toast.success("Asset updated successfully")
|
||||
toast.success(response.message)
|
||||
router.push(`/inventory/assets`)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import { zodResolver } from "@hookform/resolvers/zod"
|
||||
import { useRouter } from "next/navigation"
|
||||
import { useMemo } from "react"
|
||||
import { useForm } from "react-hook-form"
|
||||
import { toast } from "sonner"
|
||||
import { createAssetAction } from "@/actions/asset.actions"
|
||||
@@ -11,17 +12,22 @@ import {
|
||||
} from "@/components/forms/submitButton"
|
||||
import { ITEM_STATUS } from "@/lib/constants"
|
||||
import {
|
||||
buildCreateAssetSchema,
|
||||
type CreateAssetFormType,
|
||||
createAssetSchema,
|
||||
} from "@/schemas/asset.schema"
|
||||
import type { ItemWithoutStock, Recipient } from "@/types"
|
||||
|
||||
import type { AssetFormCopy, AssetStatusCopy } from "./asset.copy"
|
||||
import type {
|
||||
AssetFormCopy,
|
||||
AssetSchemaCopy,
|
||||
AssetStatusCopy,
|
||||
} from "./asset.copy"
|
||||
|
||||
interface NewAssetFormProps {
|
||||
items: ItemWithoutStock[]
|
||||
recipients: Recipient[]
|
||||
formCopy: AssetFormCopy
|
||||
schemaCopy: AssetSchemaCopy
|
||||
statusCopy: AssetStatusCopy
|
||||
submitButtonCopy: SubmitButtonCopy
|
||||
}
|
||||
@@ -30,10 +36,12 @@ export default function NewAssetForm({
|
||||
items,
|
||||
recipients,
|
||||
formCopy,
|
||||
schemaCopy,
|
||||
statusCopy,
|
||||
submitButtonCopy,
|
||||
}: NewAssetFormProps) {
|
||||
const router = useRouter()
|
||||
const schema = useMemo(() => buildCreateAssetSchema(schemaCopy), [schemaCopy])
|
||||
|
||||
const {
|
||||
register,
|
||||
@@ -42,7 +50,7 @@ export default function NewAssetForm({
|
||||
formState: { errors, isSubmitting, isSubmitSuccessful },
|
||||
watch,
|
||||
} = useForm<CreateAssetFormType>({
|
||||
resolver: zodResolver(createAssetSchema),
|
||||
resolver: zodResolver(schema),
|
||||
defaultValues: {
|
||||
status: "AVAILABLE",
|
||||
},
|
||||
@@ -69,7 +77,7 @@ export default function NewAssetForm({
|
||||
}
|
||||
|
||||
if (response?.success) {
|
||||
toast.success("Asset created successfully")
|
||||
toast.success(response.message)
|
||||
router.push(`/inventory/assets`)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ export default async function NewAssetPage() {
|
||||
items={items}
|
||||
recipients={recipients}
|
||||
formCopy={copy.form}
|
||||
schemaCopy={copy.schema}
|
||||
statusCopy={copy.status}
|
||||
submitButtonCopy={dictionary.common.submitButton}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user