import {SEARCH} from "~/graphql/mutations/search"; import type {ISearchResponse, ISearchResults} from "~/types"; import {isGraphQLError} from "~/utils/error"; export function useSearch() { const {t} = useI18n(); const searchResults = ref(null); const { mutate, loading, error } = useMutation(SEARCH); async function search( query: string ) { searchResults.value = null; const result = await mutate({ query }); if (result?.data?.search) { const limitedResults = { brands: result.data.search.results.brands?.slice(0, 7) || [], categories: result.data.search.results.categories?.slice(0, 7) || [], posts: result.data.search.results.posts?.slice(0, 7) || [], products: result.data.search.results.products?.slice(0, 7) || [] }; searchResults.value = limitedResults; return { results: limitedResults }; } } watch(error, (err) => { if (!err) return; console.error('useSearch error:', err); let message = t('popup.errors.defaultError'); if (isGraphQLError(err)) { message = err.graphQLErrors?.[0]?.message || message; } else { message = err.message; } ElNotification({ title: t('popup.errors.main'), message, type: 'error' }); }); return { search, loading, searchResults }; }