- {isSaving ? (
-
- ) : null}
-
-
-
+ return (
+
+ {isSaving ? (
+
- )
-}
+ ) : null}
+
+
+
+
+ );
+};
-export default Editor
\ No newline at end of file
+export default Editor;
diff --git a/src/pages/home/Home.tsx b/src/pages/home/Home.tsx
index f677232..07a56ed 100644
--- a/src/pages/home/Home.tsx
+++ b/src/pages/home/Home.tsx
@@ -1,4 +1,5 @@
import Divider from '@/components/Divider'
+import { usePageTitle } from '@/hooks/usePageTitle'
import { ArrowLeft, DocumentText } from 'iconsax-react'
import { useState, type FC } from 'react'
import PdfIcon from '@/assets/images/PDF.svg'
@@ -18,6 +19,7 @@ const CATALOG_SIZES = [
] as const
const Home: FC = () => {
+ usePageTitle('ساخت کاتالوگ')
const navigate = useNavigate()
const [active, setActive] = useState
('a4')
diff --git a/src/pages/viewer/Viewer.tsx b/src/pages/viewer/Viewer.tsx
index 4319ba9..5834de9 100644
--- a/src/pages/viewer/Viewer.tsx
+++ b/src/pages/viewer/Viewer.tsx
@@ -1,81 +1,89 @@
-import { type FC, useEffect, useState } from 'react';
-import BookViewer from './components/BookViewer';
-import ViewerLoading from './components/ViewerLoading';
-import { transformViewerDataToPages } from './utils/dataTransformer';
-import type { PageData } from './types';
-import type { DocumentSettings } from '@/pages/editor/store/editorStore';
-import { useParams } from 'react-router-dom';
-import { useGetCatalogById } from '@/pages/home/hooks/useHomeData';
-import { useBrowserFullscreen } from './hooks/useBrowserFullscreen';
-import { useInitialPagesPreload } from './hooks/useInitialPagesPreload';
+import { usePageTitle } from "@/hooks/usePageTitle";
+import type { DocumentSettings } from "@/pages/editor/store/editorStore";
+import { useGetCatalogById } from "@/pages/home/hooks/useHomeData";
+import { type FC, useEffect, useState } from "react";
+import { useParams } from "react-router-dom";
+import BookViewer from "./components/BookViewer";
+import ViewerLoading from "./components/ViewerLoading";
+import { useBrowserFullscreen } from "./hooks/useBrowserFullscreen";
+import { useInitialPagesPreload } from "./hooks/useInitialPagesPreload";
+import type { PageData } from "./types";
+import { transformViewerDataToPages } from "./utils/dataTransformer";
const Viewer: FC = () => {
- const { id } = useParams<{ id: string }>();
- const { data, isLoading, error: queryError } = useGetCatalogById(id ?? '');
- const [pages, setPages] = useState([]);
- const [documentSettings, setDocumentSettings] = useState | undefined>(undefined);
+ const { id } = useParams<{ id: string }>();
+ const { data, isLoading, error: queryError } = useGetCatalogById(id ?? "");
+ usePageTitle(`کاتالوگ ${data?.data?.name}`);
+ const [pages, setPages] = useState([]);
+ const [documentSettings, setDocumentSettings] = useState<
+ Partial | undefined
+ >(undefined);
- useEffect(() => {
- if (!data?.data?.content || !id) return;
- try {
- const parsed = JSON.parse(data.data.content);
- const pagesArray = Array.isArray(parsed) ? parsed : (parsed.pages ?? []);
- const settings: Partial | undefined = Array.isArray(parsed)
- ? undefined
- : parsed.documentSettings;
- const transformedPages = transformViewerDataToPages(
- { pages: pagesArray } as Parameters[0]
- );
- setPages(transformedPages);
- setDocumentSettings(settings);
- } catch (err) {
- console.error('خطا در پردازش محتوای کاتالوگ:', err);
- }
- }, [data?.data?.content, id]);
-
- useBrowserFullscreen({ enabled: Boolean(id) });
- const { isReady: areInitialPagesReady, progress: preloadProgress } = useInitialPagesPreload(
- pages,
- documentSettings,
- );
-
- if (!id) {
- return (
-
-
شناسه کاتالوگ مشخص نیست
-
- );
+ useEffect(() => {
+ if (!data?.data?.content || !id) return;
+ try {
+ const parsed = JSON.parse(data.data.content);
+ const pagesArray = Array.isArray(parsed) ? parsed : (parsed.pages ?? []);
+ const settings: Partial | undefined = Array.isArray(
+ parsed,
+ )
+ ? undefined
+ : parsed.documentSettings;
+ const transformedPages = transformViewerDataToPages({
+ pages: pagesArray,
+ } as Parameters[0]);
+ setPages(transformedPages);
+ setDocumentSettings(settings);
+ } catch (err) {
+ console.error("خطا در پردازش محتوای کاتالوگ:", err);
}
+ }, [data?.data?.content, id]);
- if (isLoading) {
- return ;
- }
-
- if (queryError) {
- return (
-
-
خطا: {queryError.message}
-
- );
- }
-
- if (pages.length === 0) {
- return (
-
- );
- }
-
- if (!areInitialPagesReady) {
- return ;
- }
+ useBrowserFullscreen({ enabled: Boolean(id) });
+ const { isReady: areInitialPagesReady, progress: preloadProgress } =
+ useInitialPagesPreload(pages, documentSettings);
+ if (!id) {
return (
-
-
-
+
+
شناسه کاتالوگ مشخص نیست
+
);
+ }
+
+ if (isLoading) {
+ return ;
+ }
+
+ if (queryError) {
+ return (
+
+
خطا: {queryError.message}
+
+ );
+ }
+
+ if (pages.length === 0) {
+ return (
+
+ );
+ }
+
+ if (!areInitialPagesReady) {
+ return ;
+ }
+
+ return (
+
+
+
+ );
};
-export default Viewer;
\ No newline at end of file
+export default Viewer;