import { useTranslation } from "react-i18next"; import { z } from "zod"; import { Input } from "@/components/ui/input"; import { DeployFormProps } from "./DeployForm"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "../ui/form"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { WorkflowNode, WorkflowNodeConfig } from "@/domain/workflow"; import { useWorkflowStore, WorkflowState } from "@/providers/workflow"; import { useShallow } from "zustand/shallow"; import { usePanel } from "./PanelProvider"; import { Button } from "../ui/button"; import { useEffect, useState } from "react"; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from "../ui/select"; import { SelectLabel } from "@radix-ui/react-select"; const selectState = (state: WorkflowState) => ({ updateNode: state.updateNode, getWorkflowOuptutBeforeId: state.getWorkflowOuptutBeforeId, }); const DeployToTencentCDN = ({ data }: DeployFormProps) => { const { updateNode, getWorkflowOuptutBeforeId } = useWorkflowStore(useShallow(selectState)); const { hidePanel } = usePanel(); const { t } = useTranslation(); const [beforeOutput, setBeforeOutput] = useState([]); useEffect(() => { const rs = getWorkflowOuptutBeforeId(data.id, "certificate"); console.log(rs); setBeforeOutput(rs); }, [data]); const formSchema = z.object({ providerType: z.string(), certificate: z.string().min(1), domain: z.string().regex(/^(?:\*\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}$/, { message: t("common.errmsg.domain_invalid"), }), }); let config: WorkflowNodeConfig = { certificate: "", providerType: "tencent-cdn", domain: "", }; if (data) config = data.config ?? config; const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { providerType: config.providerType as string, certificate: config.certificate as string, domain: config.domain as string, }, }); const onSubmit = async (config: z.infer) => { updateNode({ ...data, config: { ...config } }); hidePanel(); }; return ( <>
{ e.stopPropagation(); form.handleSubmit(onSubmit)(e); }} className="space-y-8" > ( 证书 )} /> ( {t("domain.deployment.form.domain.label")} )} />
); }; export default DeployToTencentCDN;