import React, { useEffect, useState } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, FormField, FormItem, FormMessage, } from "@/components/ui/form"; import { api } from "@/utils/api"; import { toast } from "sonner"; import { Toggle } from "@/components/ui/toggle"; import { CodeEditor } from "@/components/shared/code-editor"; import { EyeIcon, EyeOffIcon } from "lucide-react"; const addEnvironmentSchema = z.object({ environment: z.string(), }); type EnvironmentSchema = z.infer; interface Props { applicationId: string; } export const ShowEnvironment = ({ applicationId }: Props) => { const [isEnvVisible, setIsEnvVisible] = useState(true); const { mutateAsync, isLoading } = api.application.saveEnvironment.useMutation(); const { data, refetch } = api.application.one.useQuery( { applicationId, }, { enabled: !!applicationId, }, ); const form = useForm({ defaultValues: { environment: "", }, resolver: zodResolver(addEnvironmentSchema), }); useEffect(() => { if (data) { form.reset({ environment: data.env || "", }); } }, [form.reset, data, form]); const onSubmit = async (data: EnvironmentSchema) => { mutateAsync({ env: data.environment, applicationId, }) .then(async () => { toast.success("Environments Added"); await refetch(); }) .catch(() => { toast.error("Error to add environment"); }); }; useEffect(() => { if (isEnvVisible) { if (data?.env) { const maskedLines = data.env .split("\n") .map((line) => "*".repeat(line.length)) .join("\n"); form.reset({ environment: maskedLines, }); } else { form.reset({ environment: "", }); } } else { form.reset({ environment: data?.env || "", }); } }, [form.reset, data, form, isEnvVisible]); return (
Environment Settings You can add environment variables to your resource.
{isEnvVisible ? ( ) : ( )}
( )} />
); };