# leadin/11.3.65/scripts/shared/Form/hooks/useForms.ts

HubSpot All-In-One Marketing – Forms, Popups, Live Chat, version 11.3.65. 54 lines.

- Page: https://pluginprobe.com/plugins/leadin/11.3.65/code/scripts/shared/Form/hooks/useForms.ts
- Raw: https://pluginprobe.com/plugins/leadin/11.3.65/raw/scripts/shared/Form/hooks/useForms.ts
- Modified: 2026-07-10T16:14:28+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/leadin/11.3.65/code/scripts/shared/Form/hooks/useForms.ts#L10-L20`.

```typescript
import { useState } from 'react';
import debounce from 'lodash/debounce';
import { usePostAsyncBackgroundMessage } from '../../../iframe/useBackgroundApp';
import { ProxyMessages } from '../../../iframe/integratedMessages';
import { IForm } from '../../types';
import useGetTemplateAvailability, {
  getTemplateOptions,
} from './useGetTemplateAvailability';

export default function useForms() {
  const proxy = usePostAsyncBackgroundMessage();
  const [formApiError, setFormApiError] = useState<any>(null);
  const { availabilityPromise } = useGetTemplateAvailability();

  const search = debounce(
    (search: string, callback: Function) => {
      return Promise.all([
        availabilityPromise,
        proxy({
          key: ProxyMessages.FetchForms,
          payload: {
            search,
          },
        }),
      ])
        .then(([templateAvailabilityResponse, forms]) => {
          const TEMPLATE_OPTIONS = getTemplateOptions(
            templateAvailabilityResponse.templateAvailability
          );

          callback([
            ...forms.map((form: IForm) => ({
              label: form.name,
              value: form.guid,
              embedVersion: form.embedVersion,
            })),
            TEMPLATE_OPTIONS,
          ]);
        })
        .catch(error => {
          setFormApiError(error);
        });
    },
    300,
    { trailing: true }
  );

  return {
    search,
    formApiError,
    reset: () => setFormApiError(null),
  };
}

```
