@heyframe/composables
Version:
HeyFrame Frontends composables for Vue
59 lines (54 loc) • 1.36 kB
text/typescript
import { useHeyFrameContext } from "#imports";
import type { Schemas, operations } from "#heyframe";
import { cmsAssociations } from "../cms/cmsAssociations";
export type UseLandingSearchReturn = {
/**
* Search for landing page by ID
* Accepts optional media associations
*/
search(
navigationId: string,
options?: {
withCmsAssociations?: boolean;
},
): Promise<Schemas["LandingPage"]>;
};
/**
* Composable for landing page search.
* @public
* @category Navigation & Routing
*/
export function useLandingSearch(): {
search: (
navigationId: string,
options?: {
withCmsAssociations?: boolean;
},
) => Promise<Schemas["LandingPage"]>;
} {
const { apiClient } = useHeyFrameContext();
const search = async (
navigationId: string,
options?: {
withCmsAssociations?: boolean;
},
) => {
const associations: operations["readLandingPage post /landing-page/{landingPageId}"]["body"]["associations"] =
options?.withCmsAssociations ? cmsAssociations.associations : {};
const result = await apiClient.invoke(
"readLandingPage post /landing-page/{landingPageId}",
{
pathParams: {
landingPageId: navigationId,
},
body: {
associations,
},
},
);
return result.data;
};
return {
search,
};
}