import { zodResolver } from "@hookform/resolvers/zod" import { AdminCampaign } from "@medusajs/types" import { Button, DatePicker, Input, toast } from "@medusajs/ui" import { useForm } from "react-hook-form" import { useTranslation } from "react-i18next" import * as zod from "zod" import { Form } from "../../../../../components/common/form" import { RouteDrawer, useRouteModal } from "../../../../../components/modals" import { KeyboundForm } from "../../../../../components/utilities/keybound-form" import { useUpdateCampaign } from "../../../../../hooks/api/campaigns" type EditCampaignFormProps = { campaign: AdminCampaign } const EditCampaignSchema = zod.object({ name: zod.string(), description: zod.string().optional(), campaign_identifier: zod.string().optional(), starts_at: zod.date().optional(), ends_at: zod.date().optional(), }) export const EditCampaignForm = ({ campaign }: EditCampaignFormProps) => { const { t } = useTranslation() const { handleSuccess } = useRouteModal() const form = useForm>({ defaultValues: { name: campaign.name || "", description: campaign.description || "", campaign_identifier: campaign.campaign_identifier || "", starts_at: campaign.starts_at ? new Date(campaign.starts_at) : undefined, ends_at: campaign.ends_at ? new Date(campaign.ends_at) : undefined, }, resolver: zodResolver(EditCampaignSchema), }) const { mutateAsync, isPending } = useUpdateCampaign(campaign.id) const handleSubmit = form.handleSubmit(async (data) => { await mutateAsync( { name: data.name, description: data.description, campaign_identifier: data.campaign_identifier, starts_at: data.starts_at, ends_at: data.ends_at, }, { onSuccess: ({ campaign }) => { toast.success( t("campaigns.edit.successToast", { name: campaign.name, }) ) handleSuccess() }, onError: (error) => { toast.error(error.message) }, } ) }) return (
{ return ( {t("fields.name")} ) }} /> { return ( {t("fields.description")} ) }} /> { return ( {t("campaigns.fields.identifier")} ) }} /> { return ( {t("campaigns.fields.start_date")} ) }} /> { return ( {t("campaigns.fields.end_date")} ) }} />
) }