export function useDocumentationLinks()

in experimenter/experimenter/nimbus-ui/src/components/FormOverview/documentationLink.ts [21:62]


export function useDocumentationLinks(
  experiment: getExperiment_experimentBySlug | null | undefined,
  control: UseFormMethods["control"],
  setValue: UseFormMethods["setValue"],
) {
  const {
    fields: documentationLinks,
    append,
    remove,
  } = useFieldArray<AnnotatedDocumentationLink>({
    control,
    name: "documentationLinks",
  });

  const stateAPI = useMemo(
    () => ({
      addDocumentationLink: () => {
        append(emptyDocumentationLink());
      },
      removeDocumentationLink: (
        documentationLink: Partial<
          ArrayField<AnnotatedDocumentationLink, "id">
        >,
      ) => {
        const index = documentationLinks.findIndex(
          (d) => d.id === documentationLink.id,
        );
        remove(index);
      },
    }),
    [documentationLinks, append, remove],
  );

  useEffect(() => {
    const documentationLinks = setupDocumentationLinks(
      experiment?.documentationLinks,
    );
    setValue("documentationLinks", documentationLinks);
  }, [experiment, setValue]);

  return { documentationLinks, ...stateAPI };
}