import FormField from "@/components/ui/form";
import { MiscFormFieldProps } from "../types";
import { InputField } from "@/components/ui/input";
import { SelectField } from "@/components/ui/select";
import { incusTypes } from "../schema/form";
import CredentialsSection from "./credentials-section";
import { useKeychainsOptions } from "../hooks/query";

export const IncusFormFields = ({ form }: MiscFormFieldProps) => {
  const keys = useKeychainsOptions();
  const type = form.watch("metadata.type");

  return (
    <>
      <FormField label="Type">
        <SelectField
          form={form}
          name="metadata.type"
          placeholder="Select Type"
          items={incusTypes}
        />
      </FormField>
      <FormField label="Instance ID">
        <InputField
          form={form}
          name="metadata.instance"
          placeholder="myinstance"
        />
      </FormField>
      {type === "lxc" && (
        <>
          <FormField label="User ID">
            <InputField
              form={form}
              keyboardType="number-pad"
              name="metadata.user"
            />
          </FormField>
          <FormField label="Shell">
            <InputField form={form} name="metadata.shell" placeholder="bash" />
          </FormField>
        </>
      )}

      <CredentialsSection type="cert" />

      <FormField label="Client Certificate">
        <SelectField
          form={form}
          name="keyId"
          placeholder="Select Certificate"
          items={keys.filter((i) => i.type === "cert")}
        />
      </FormField>
    </>
  );
};