diff --git a/.env b/.env index ff98aa8..7fee5fb 100644 --- a/.env +++ b/.env @@ -1,4 +1,4 @@ -VITE_API_URL=https://dpage-api.danakcorp.com -# VITE_API_URL=http://192.168.99.131:4000 +# VITE_API_URL=https://dpage-api.danakcorp.com +VITE_API_URL=http://192.168.99.131:4000 VITE_TOKEN_NAME=dpage-editor-t VITE_REFRESH_TOKEN_NAME=dpage-editor-refresh-t \ No newline at end of file diff --git a/src/config/Paths.ts b/src/config/Paths.ts index 992b1f4..052ef78 100644 --- a/src/config/Paths.ts +++ b/src/config/Paths.ts @@ -5,6 +5,7 @@ export const Paths = { viewerBySlug: "/catalogue", catalog: { list: "/catalogue", + business: "/business/", }, designer: { request: "/designer/request", @@ -14,6 +15,16 @@ export const Paths = { const viewerPathPrefix = `${Paths.viewer}/`; const viewerBySlugPathPrefix = `${Paths.viewerBySlug}/`; +const businessCatalogPathPrefix = Paths.catalog.business; + +/** Public business catalogue grid: /business/:slug */ +export const isBusinessCatalogPath = (pathname: string): boolean => { + return ( + pathname.startsWith(businessCatalogPathPrefix) && + pathname.length > businessCatalogPathPrefix.length + ); +}; + /** Full-screen viewer: /viewer/:id or /catalogue/:slug (not the list at /catalogue). */ export const isViewerPath = (pathname: string): boolean => { const isViewerById = diff --git a/src/pages/catalogue/Business.tsx b/src/pages/catalogue/Business.tsx new file mode 100644 index 0000000..8e058a9 --- /dev/null +++ b/src/pages/catalogue/Business.tsx @@ -0,0 +1,26 @@ +import GridWrapper from "@/components/GridWrapper"; +import { type FC } from "react"; +import { useParams } from "react-router-dom"; +import ButtonAddCatalogue from "./components/ButtonAddCatalogue"; +import CatalogueItem from "./components/CatalogueItem"; +import { useGetBusinessCatalog } from "./hooks/useCatalogueData"; + +const Business: FC = () => { + const { slug } = useParams<{ slug: string }>(); + const { data, isPending, refetch } = useGetBusinessCatalog(slug ?? ""); + // const { data: businessData, isLoading: businessLoading } = + // useGetBusinessBySlug(slug ?? ""); + + return ( +
+ + {data?.data?.map((item) => { + return ; + })} + + +
+ ); +}; + +export default Business; diff --git a/src/pages/catalogue/hooks/useCatalogueData.ts b/src/pages/catalogue/hooks/useCatalogueData.ts index 19a95c3..9f6f59d 100644 --- a/src/pages/catalogue/hooks/useCatalogueData.ts +++ b/src/pages/catalogue/hooks/useCatalogueData.ts @@ -1,4 +1,4 @@ -import { useMutation } from "@tanstack/react-query"; +import { useMutation, useQuery } from "@tanstack/react-query"; import * as api from "../service/CatalogueService"; export const usePurchaseInitate = () => { @@ -6,3 +6,19 @@ export const usePurchaseInitate = () => { mutationFn: api.purchaseInitate, }); }; + +export const useGetBusinessCatalog = (slug: string) => { + return useQuery({ + queryKey: ["businessCatalog", slug], + queryFn: () => api.getBusinessCatalog(slug), + enabled: !!slug, + }); +}; + +export const useGetBusinessBySlug = (slug: string) => { + return useQuery({ + queryKey: ["business", slug], + queryFn: () => api.getBusinessBySlug(slug), + enabled: !!slug, + }); +}; diff --git a/src/pages/catalogue/service/CatalogueService.ts b/src/pages/catalogue/service/CatalogueService.ts index 515ed4d..e56bb33 100644 --- a/src/pages/catalogue/service/CatalogueService.ts +++ b/src/pages/catalogue/service/CatalogueService.ts @@ -1,5 +1,5 @@ import axios from "@/config/axios"; -import type { PurchaseInitiate } from "../types/Types"; +import type { CatalogResponseType, PurchaseInitiate } from "../types/Types"; export const purchaseInitate = async (params: PurchaseInitiate) => { const { data } = await axios.post( @@ -8,3 +8,15 @@ export const purchaseInitate = async (params: PurchaseInitiate) => { ); return data; }; + +export const getBusinessCatalog = async (slug: string) => { + const { data } = await axios.get( + `/public/catalogue/business/slug/${slug}`, + ); + return data; +}; + +export const getBusinessBySlug = async (slug: string) => { + const { data } = await axios.get(`/public/business/${slug}`); + return data; +}; diff --git a/src/router/MainRouter.tsx b/src/router/MainRouter.tsx index 9312ba0..3192e3f 100644 --- a/src/router/MainRouter.tsx +++ b/src/router/MainRouter.tsx @@ -1,5 +1,6 @@ -import { isViewerPath, Paths } from "@/config/Paths"; +import { isBusinessCatalogPath, isViewerPath, Paths } from "@/config/Paths"; import { clx } from "@/helpers/utils"; +import Business from "@/pages/catalogue/Business"; import CatalogueList from "@/pages/catalogue/List"; import DesignerRequest from "@/pages/designer/Request"; import Editor from "@/pages/editor/Editor"; @@ -15,9 +16,11 @@ const MainRouter = () => { const { hasSubMenu } = useSharedStore(); const location = useLocation(); const isViewerRoute = isViewerPath(location.pathname); + const isBusinessCatalogRoute = isBusinessCatalogPath(location.pathname); + const hideAppChrome = isViewerRoute || isBusinessCatalogRoute; const hiddenSideBarRoutes = [Paths.editor]; const shouldRenderSideBar = - !hiddenSideBarRoutes.includes(location.pathname) && !isViewerRoute; + !hiddenSideBarRoutes.includes(location.pathname) && !hideAppChrome; const routeHasLocalSidebar = location.pathname.includes("editor"); const hasSidebarSpace = shouldRenderSideBar || routeHasLocalSidebar; const headerSidebarSize = routeHasLocalSidebar ? "wide" : "default"; @@ -29,8 +32,8 @@ const MainRouter = () => { isViewerRoute ? "fixed inset-0 z-50 bg-neutral-100" : "p-4", )} > - {!isViewerRoute && shouldRenderSideBar ? : null} - {!isViewerRoute ? ( + {!hideAppChrome && shouldRenderSideBar ? : null} + {!hideAppChrome ? (
{
{ } /> + + } + /> +