# give/4.18.0/src/DonationForms/resources/utils.ts

GiveWP – Donation Plugin and Fundraising Platform, version 4.18.0. 54 lines.

- Page: https://pluginprobe.com/plugins/give/4.18.0/code/src/DonationForms/resources/utils.ts
- Raw: https://pluginprobe.com/plugins/give/4.18.0/raw/src/DonationForms/resources/utils.ts
- Modified: 2025-09-10T13:42:30+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/give/4.18.0/code/src/DonationForms/resources/utils.ts#L10-L20`.

```typescript
import {useEntityRecord, useEntityRecords} from '@wordpress/core-data';
import {Form} from './types'


type FormStatus = "draft" | "publish" | "private" | "orphaned";

/**
 * @since 4.2.0
 */
export function useForm(formId: number) {
    const data = useEntityRecord('givewp', 'forms', formId);

    return {
        form: {
            ...data?.record as Form
        },
        hasResolved: data?.hasResolved,
        isResolving: data?.isResolving,
    };
}

type useFormsParams = {
    ids?: number[],
    page?: number,
    per_page?: number;
    status?: FormStatus[]
}

export function useForms({
     ids = [],
     page = 1,
     per_page = 30,
     status = ['publish']
}: useFormsParams = {}) {
    const data = useEntityRecords('givewp', 'form', {
        ids,
        page,
        per_page,
        status
    });

    return {
        forms: data?.records as Form[],
        //@ts-ignore
        totalItems: data.totalItems,
        //@ts-ignore
        totalPages: data.totalPages,
        hasResolved: data?.hasResolved,
        isResolving: data?.isResolving,
    };
}



```
