diff --git a/apps/readest-app/src/app/reader/components/ReaderContent.tsx b/apps/readest-app/src/app/reader/components/ReaderContent.tsx index 56ffcf39..64b2783d 100644 --- a/apps/readest-app/src/app/reader/components/ReaderContent.tsx +++ b/apps/readest-app/src/app/reader/components/ReaderContent.tsx @@ -23,6 +23,7 @@ import Spinner from '@/components/Spinner'; import SideBar from './sidebar/SideBar'; import Notebook from './notebook/Notebook'; import BooksGrid from './BooksGrid'; +import { eventDispatcher } from '@/utils/event'; const ReaderContent: React.FC<{ ids?: string; settings: SystemSettings }> = ({ ids, settings }) => { const router = useRouter(); @@ -64,8 +65,10 @@ const ReaderContent: React.FC<{ ids?: string; settings: SystemSettings }> = ({ i useEffect(() => { if (isTauriAppPlatform()) tauriHandleOnCloseWindow(handleCloseBooks); window.addEventListener('beforeunload', handleCloseBooks); + eventDispatcher.on('quit-app', handleCloseBooks); return () => { window.removeEventListener('beforeunload', handleCloseBooks); + eventDispatcher.off('quit-app', handleCloseBooks); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [bookKeys]); diff --git a/apps/readest-app/src/app/reader/components/ViewMenu.tsx b/apps/readest-app/src/app/reader/components/ViewMenu.tsx index ba5a2f82..16a162d9 100644 --- a/apps/readest-app/src/app/reader/components/ViewMenu.tsx +++ b/apps/readest-app/src/app/reader/components/ViewMenu.tsx @@ -5,7 +5,7 @@ import { BiMoon, BiSun } from 'react-icons/bi'; import { TbSunMoon } from 'react-icons/tb'; import { MdZoomOut, MdZoomIn, MdCheck } from 'react-icons/md'; -import { ONE_COLUMN_MAX_INLINE_SIZE } from '@/services/constants'; +import { MAX_ZOOM_LEVEL, MIN_ZOOM_LEVEL, ONE_COLUMN_MAX_INLINE_SIZE } from '@/services/constants'; import MenuItem from '@/components/MenuItem'; import { useReaderStore } from '@/store/readerStore'; import { useTranslation } from '@/hooks/useTranslation'; @@ -32,8 +32,8 @@ const ViewMenu: React.FC = ({ const [isInvertedColors, setInvertedColors] = useState(viewSettings!.invert); const [zoomLevel, setZoomLevel] = useState(viewSettings!.zoomLevel!); - const zoomIn = () => setZoomLevel((prev) => Math.min(prev + 10, 200)); - const zoomOut = () => setZoomLevel((prev) => Math.max(prev - 10, 50)); + const zoomIn = () => setZoomLevel((prev) => Math.min(prev + 1, MAX_ZOOM_LEVEL)); + const zoomOut = () => setZoomLevel((prev) => Math.max(prev - 1, MIN_ZOOM_LEVEL)); const resetZoom = () => setZoomLevel(100); const toggleScrolledMode = () => setScrolledMode(!isScrolledMode); const toggleInvertedColors = () => setInvertedColors(!isInvertedColors); @@ -77,12 +77,9 @@ const ViewMenu: React.FC = ({ useEffect(() => { const view = getView(bookKey); if (!view) return; - // FIXME: zoom level is not working in paginated mode - if (viewSettings?.scrolled) { - view.renderer.setStyles?.(getStyles(viewSettings!, themeCode)); - } viewSettings!.zoomLevel = zoomLevel; setViewSettings(bookKey, viewSettings!); + view.renderer.setStyles?.(getStyles(viewSettings!, themeCode)); // eslint-disable-next-line react-hooks/exhaustive-deps }, [zoomLevel]); @@ -91,17 +88,12 @@ const ViewMenu: React.FC = ({ tabIndex={0} className='view-menu dropdown-content dropdown-right no-triangle border-base-100 z-20 mt-1 w-72 border shadow-2xl' > -
+