Commit ca9001bd authored by Антон Крейда's avatar Антон Крейда
Browse files

Merge branch 'catalog' into 'develop'

Catalog

See merge request !2
parents 6795fc57 9cec7978
Loading
Loading
Loading
Loading
+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;
+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;
+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.ico

deleted100644 → 0
−25.3 KiB
Loading image diff...
+3 −3
Original line number Diff line number Diff line
@@ -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