From b5a454a3fe7450bb1b8052a494ecefa4d95a782c Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sat, 14 Mar 2026 11:08:21 +0330 Subject: [PATCH] viewer connect api --- .../catalogue/components/CatalogueItem.tsx | 10 ++-- src/pages/viewer/Viewer.tsx | 51 ++++++++++--------- src/router/MainRouter.tsx | 2 +- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/src/pages/catalogue/components/CatalogueItem.tsx b/src/pages/catalogue/components/CatalogueItem.tsx index 8baaf47..db3cddf 100644 --- a/src/pages/catalogue/components/CatalogueItem.tsx +++ b/src/pages/catalogue/components/CatalogueItem.tsx @@ -24,10 +24,12 @@ const CatalogueItem: FC = ({ item }) => {
-
- -
- + +
+ +
+ +
diff --git a/src/pages/viewer/Viewer.tsx b/src/pages/viewer/Viewer.tsx index 1eff3d0..b3b17c9 100644 --- a/src/pages/viewer/Viewer.tsx +++ b/src/pages/viewer/Viewer.tsx @@ -2,36 +2,37 @@ import { type FC, useEffect, useState } from 'react'; import BookViewer from './components/BookViewer'; import { transformViewerDataToPages } from './utils/dataTransformer'; import type { PageData } from './types'; +import { useParams } from 'react-router-dom'; +import { useGetCatalogById } from '@/pages/home/hooks/useHomeData'; const Viewer: FC = () => { + const { id } = useParams<{ id: string }>(); + const { data, isLoading, error: queryError } = useGetCatalogById(id ?? ''); const [pages, setPages] = useState([]); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(null); useEffect(() => { - const loadViewerData = async () => { - try { - setLoading(true); - const response = await fetch('/viewer-data.json'); - if (!response.ok) { - throw new Error('خطا در بارگذاری داده‌ها'); - } - const data = await response.json(); - const transformedPages = transformViewerDataToPages(data); - setPages(transformedPages); - setError(null); - } catch (err) { - setError(err instanceof Error ? err.message : 'خطای نامشخص'); - console.error('خطا در بارگذاری viewer-data.json:', err); - } finally { - setLoading(false); - } - }; + if (!data?.data?.content || !id) return; + try { + const parsed = JSON.parse(data.data.content); + const pagesArray = Array.isArray(parsed) ? parsed : []; + const transformedPages = transformViewerDataToPages( + { pages: pagesArray } as Parameters[0] + ); + setPages(transformedPages); + } catch (err) { + console.error('خطا در پردازش محتوای کاتالوگ:', err); + } + }, [data?.data?.content, id]); - loadViewerData(); - }, []); + if (!id) { + return ( +
+
شناسه کاتالوگ مشخص نیست
+
+ ); + } - if (loading) { + if (isLoading) { return (
در حال بارگذاری...
@@ -39,10 +40,10 @@ const Viewer: FC = () => { ); } - if (error) { + if (queryError) { return (
-
خطا: {error}
+
خطا: {queryError.message}
); } diff --git a/src/router/MainRouter.tsx b/src/router/MainRouter.tsx index f4f19c1..0ef7121 100644 --- a/src/router/MainRouter.tsx +++ b/src/router/MainRouter.tsx @@ -33,7 +33,7 @@ const MainRouter = () => { } /> } /> - } /> + } /> } />