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 ? (