schon/storefront/pages/index.vue
Alexandr SaVBaD Waltz c9807bd6d4 Features: 1) Add product rating support in types, GraphQL fragments, and UI components; 2) Implement feedback management including GraphQL mutations, composables, and notification handling; 3) Enhance locale switching with improved reactivity, Apollo query clearing, and supported locale validation; 4) Introduce useOrderBuy composable for order purchasing workflow.
Fixes: 1) Correct mutation name from `setlanguage` to `setLanguage` for consistency; 2) Improve product listing reactivity by addressing missing initialization in `useStore`; 3) Replace generic product queries with parametrized `useProducts` for modularity; 4) Resolve minor typos, missing semicolons, and code formatting inconsistencies.

Extra: 1) Refactor feedback-related types, composables, and GraphQL utilities for modularity; 2) Update styles, Vue templates, and related scripts with enhanced formatting; 3) Remove unused methods like `getProducts`, standardizing query reactivity; 4) Cleanup and organize imports across multiple files.
2025-10-06 18:19:19 +03:00

60 lines
No EOL
1.4 KiB
Vue

<template>
<div class="home">
<home-hero />
<home-brands :brands="brands" />
<home-collection
:tags="tags"
:newProducts="newProducts"
:priceProducts="priceProducts"
/>
<home-category-tags />
</div>
</template>
<script setup lang="ts">
import {useUserActivation} from "~/composables/user";
import { useRouteQuery } from '@vueuse/router';
import {useBrands} from "~/composables/brands";
import {useProducts, useProductTags} from "~/composables/products";
const {t} = useI18n();
const appStore = useAppStore();
const route = useRoute();
useHead({
title: t('breadcrumbs.home'),
});
const token = useRouteQuery('token', '');
const uid = useRouteQuery('uid', '');
const referrer = useRouteQuery('referrer', '');
const { activateUser } = useUserActivation();
const { brands } = useBrands();
const { tags } = useProductTags();
const { products: newProducts } = useProducts({ orderBy: '-modified' });
const { products: priceProducts } = useProducts({ orderBy: '-price' });
onMounted( async () => {
if (route.path.includes('activate-user') && token.value && uid.value) {
await activateUser(token.value, uid.value);
}
if (route.path.includes('reset-password') && token.value && uid.value) {
appStore.setActiveState('new-password');
}
if (referrer.value) {
appStore.setActiveState('register');
}
});
</script>
<style lang="scss" scoped>
.home {
display: flex;
flex-direction: column;
gap: 125px;
}
</style>