UNPKG

@scayle/storefront-nuxt

Version:

Nuxt integration for the SCAYLE Commerce Engine and Storefront API

53 lines (52 loc) 1.27 kB
import { useState } from "nuxt/app"; import { useRpcCall } from "../core/useRpcCall.js"; export function useStorefrontSearch(searchQuery, { params } = {}, key = "search") { const data = useState( `${key}-data`, () => void 0 ); const getSearchSuggestionsRpc = useRpcCall("getSearchSuggestions"); const resolveSearchRpc = useRpcCall("resolveSearch"); const error = useState( `${key}-error`, () => void 0 ); const status = useState(`${key}-error`, () => "idle"); const getSearchSuggestions = async () => { status.value = "pending"; if (!searchQuery.value) { return; } try { data.value = await getSearchSuggestionsRpc({ term: String(searchQuery.value), ...params }); } catch (e) { error.value = e; } finally { status.value = error.value ? "error" : "success"; } }; const resolveSearch = async () => { if (!searchQuery.value) { return; } return await resolveSearchRpc({ term: searchQuery.value, ...params }); }; const resetSearch = () => { searchQuery.value = ""; data.value = { suggestions: [] }; }; return { data, status, error, resetSearch, getSearchSuggestions, resolveSearch }; }