schon/storefront/composables/products/useProductBySlug.ts
Alexandr SaVBaD Waltz 761fecf67f Features: 1) Add useWishlistOverwrite composable for wishlist mutations, including adding, removing, and bulk actions; 2) Introduce new localized UI texts for cart and wishlist operations; 3) Enhance filtering logic with parseAttributesString and route query synchronization;
Fixes: 1) Replace `ElNotification` calls with `useNotification` utility across all authentication and user-related composables; 2) Add missing semicolons in multiple index exports and styled components; 3) Resolve issues with reactivity in `useStore` composable by renaming and restructuring product variables;

Extra: 1) Refactor localized strings and translations for better readability and maintenance; 2) Tweak styles including scoped styles, z-index adjustments, and SCSS mixins; 3) Remove unused components and imports to streamline storefront layout.
2025-07-06 19:49:26 +03:00

26 lines
No EOL
625 B
TypeScript

import { GET_PRODUCT_BY_SLUG } from '~/graphql/queries/standalone/products';
import type { IProduct, IProductResponse } from '~/types';
export async function useProductBySlug(slug: string) {
const product = useState<IProduct | null>('currentProduct', () => null);
const { data, error } = await useAsyncQuery<IProductResponse>(
GET_PRODUCT_BY_SLUG,
{ slug }
);
const result = data.value?.products?.edges[0]?.node ?? null;
if (result) {
product.value = result;
}
watch(error, (err) => {
if (err) {
console.error('useProductBySlug error:', err);
}
});
return {
product
};
}