Loading src/app/catalog/[shop]/[category]/[indexCategoryParam]/page.tsx 0 → 100644 +38 −0 Original line number Diff line number Diff line import { HydrationBoundary, dehydrate } from '@tanstack/react-query'; import { FC, Suspense } from 'react'; import { CategoryPage } from '@/view'; import { getQueryClient } from '@/utils'; import { getCatalog } from '@/api'; import Loading from '../../../../loading'; interface ICategory { params: { shop: string; category: string; indexCategoryParam: string; }; } const Category: FC<ICategory> = ({ params }) => { const { shop, category, indexCategoryParam } = params; const queryClient = getQueryClient(); queryClient.prefetchQuery({ queryKey: ['catalog', shop], queryFn: async () => getCatalog(shop), }); const dehydratedState = dehydrate(queryClient); return ( <Suspense fallback={<Loading />}> <HydrationBoundary state={dehydratedState}> <CategoryPage indexCategoryParam={indexCategoryParam} indexTabParam={category} shop={shop} /> </HydrationBoundary> </Suspense> ); }; export default Category; src/app/catalog/[shop]/[category]/page.tsx 0 → 100644 +32 −0 Original line number Diff line number Diff line import { HydrationBoundary, dehydrate } from '@tanstack/react-query'; import { FC, Suspense } from 'react'; import { CatalogPage } from '@/view'; import { getQueryClient } from '@/utils'; import { getCatalog } from '@/api'; import Loading from '../../../loading'; interface ICatalog { params: { shop: string; category: string; }; } const Catalog: FC<ICatalog> = async ({ params }) => { const { shop, category } = params; const queryClient = getQueryClient(); await queryClient.prefetchQuery({ queryKey: ['catalog', shop], queryFn: async () => getCatalog(shop), }); const dehydratedState = dehydrate(queryClient); return ( <HydrationBoundary state={dehydratedState}> <Suspense fallback={<Loading />}> <CatalogPage category={category} shop={shop} /> </Suspense> </HydrationBoundary> ); }; export default Catalog; src/app/catalog/[shop]/product/[item]/page.tsx 0 → 100644 +49 −0 Original line number Diff line number Diff line import { HydrationBoundary, dehydrate } from '@tanstack/react-query'; import { FC, Suspense } from 'react'; import { ProductPage } from '@/view'; import { getQueryClient } from '@/utils'; import { getProduct, postRecommendations } from '@/api'; import Loading from '../../../../loading'; interface IProduct { params: { shop: string; item: string; }; } const Product: FC<IProduct> = async ({ params }) => { const { shop, item } = params; const queryClient = getQueryClient(); try { await Promise.all([ queryClient.prefetchQuery({ queryKey: ['catalog', shop, item], queryFn: () => getProduct(shop, item), }), queryClient.prefetchQuery({ queryKey: ['promo', shop, item], queryFn: () => postRecommendations({ shop: shop || '', currentItem: item || '', }), }), ]); } catch (error) { console.error('Error prefetching data:', error); } const dehydratedState = dehydrate(queryClient); return ( <Suspense fallback={<Loading />}> <HydrationBoundary state={dehydratedState}> <ProductPage item={item} shop={shop} /> </HydrationBoundary> </Suspense> ); }; export default Product; src/app/favicon.icodeleted 100644 → 0 −25.3 KiB Loading image diff... src/app/layout.tsx +3 −3 Original line number Diff line number Diff line Loading @@ -11,10 +11,10 @@ import { Widget, } from '@/components'; import StoreProvider from './store-provider'; import './globals.css'; import StoreProvider from '../lib/store-provider'; import '../styles/globals.css'; import StyledComponentsRegistry from '../lib/registry'; import ReactQueryProvider from './query-provider'; import ReactQueryProvider from '../lib/query-provider'; import type { Metadata } from 'next'; Loading Loading
src/app/catalog/[shop]/[category]/[indexCategoryParam]/page.tsx 0 → 100644 +38 −0 Original line number Diff line number Diff line import { HydrationBoundary, dehydrate } from '@tanstack/react-query'; import { FC, Suspense } from 'react'; import { CategoryPage } from '@/view'; import { getQueryClient } from '@/utils'; import { getCatalog } from '@/api'; import Loading from '../../../../loading'; interface ICategory { params: { shop: string; category: string; indexCategoryParam: string; }; } const Category: FC<ICategory> = ({ params }) => { const { shop, category, indexCategoryParam } = params; const queryClient = getQueryClient(); queryClient.prefetchQuery({ queryKey: ['catalog', shop], queryFn: async () => getCatalog(shop), }); const dehydratedState = dehydrate(queryClient); return ( <Suspense fallback={<Loading />}> <HydrationBoundary state={dehydratedState}> <CategoryPage indexCategoryParam={indexCategoryParam} indexTabParam={category} shop={shop} /> </HydrationBoundary> </Suspense> ); }; export default Category;
src/app/catalog/[shop]/[category]/page.tsx 0 → 100644 +32 −0 Original line number Diff line number Diff line import { HydrationBoundary, dehydrate } from '@tanstack/react-query'; import { FC, Suspense } from 'react'; import { CatalogPage } from '@/view'; import { getQueryClient } from '@/utils'; import { getCatalog } from '@/api'; import Loading from '../../../loading'; interface ICatalog { params: { shop: string; category: string; }; } const Catalog: FC<ICatalog> = async ({ params }) => { const { shop, category } = params; const queryClient = getQueryClient(); await queryClient.prefetchQuery({ queryKey: ['catalog', shop], queryFn: async () => getCatalog(shop), }); const dehydratedState = dehydrate(queryClient); return ( <HydrationBoundary state={dehydratedState}> <Suspense fallback={<Loading />}> <CatalogPage category={category} shop={shop} /> </Suspense> </HydrationBoundary> ); }; export default Catalog;
src/app/catalog/[shop]/product/[item]/page.tsx 0 → 100644 +49 −0 Original line number Diff line number Diff line import { HydrationBoundary, dehydrate } from '@tanstack/react-query'; import { FC, Suspense } from 'react'; import { ProductPage } from '@/view'; import { getQueryClient } from '@/utils'; import { getProduct, postRecommendations } from '@/api'; import Loading from '../../../../loading'; interface IProduct { params: { shop: string; item: string; }; } const Product: FC<IProduct> = async ({ params }) => { const { shop, item } = params; const queryClient = getQueryClient(); try { await Promise.all([ queryClient.prefetchQuery({ queryKey: ['catalog', shop, item], queryFn: () => getProduct(shop, item), }), queryClient.prefetchQuery({ queryKey: ['promo', shop, item], queryFn: () => postRecommendations({ shop: shop || '', currentItem: item || '', }), }), ]); } catch (error) { console.error('Error prefetching data:', error); } const dehydratedState = dehydrate(queryClient); return ( <Suspense fallback={<Loading />}> <HydrationBoundary state={dehydratedState}> <ProductPage item={item} shop={shop} /> </HydrationBoundary> </Suspense> ); }; export default Product;
src/app/layout.tsx +3 −3 Original line number Diff line number Diff line Loading @@ -11,10 +11,10 @@ import { Widget, } from '@/components'; import StoreProvider from './store-provider'; import './globals.css'; import StoreProvider from '../lib/store-provider'; import '../styles/globals.css'; import StyledComponentsRegistry from '../lib/registry'; import ReactQueryProvider from './query-provider'; import ReactQueryProvider from '../lib/query-provider'; import type { Metadata } from 'next'; Loading