UNPKG

@nuxtjs/algolia

Version:
29 lines (28 loc) 1.13 kB
import { computed, onUnmounted } from "vue"; import { useAlgoliaInitIndex } from "./useAlgoliaInitIndex.mjs"; import { useState, useRuntimeConfig, useNuxtApp } from "#imports"; export function useAlgoliaSearch(indexName) { const config = useRuntimeConfig(); const index = indexName || config.public.algolia.globalIndex; if (!index) { throw new Error("`[@nuxtjs/algolia]` Cannot search in Algolia without `globalIndex` or `indexName` passed as a parameter"); } const algoliaIndex = useAlgoliaInitIndex(index); const result = useState(`${index}-search-result`, () => null); const search = async ({ query, requestOptions }) => { if (import.meta.server) { const nuxtApp = useNuxtApp(); nuxtApp.$algolia.transporter.requester = (await import("@algolia/requester-fetch").then((lib) => lib.default || lib)).createFetchRequester(); } const searchResult = await algoliaIndex.search(query, requestOptions); result.value = searchResult; return searchResult; }; onUnmounted(() => { result.value = null; }); return { result: computed(() => result.value), search }; }