From 34aeac9c332b904f2a2881458efa24f4bfe2a874 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sun, 24 Mar 2024 15:05:31 +0100 Subject: [PATCH] Preload pages in single page mode (#670) --- src/components/reader/pager/PagedPager.tsx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/components/reader/pager/PagedPager.tsx b/src/components/reader/pager/PagedPager.tsx index cb193cb2..e389cea8 100644 --- a/src/components/reader/pager/PagedPager.tsx +++ b/src/components/reader/pager/PagedPager.tsx @@ -10,12 +10,27 @@ import { MouseEvent, useEffect, useRef } from 'react'; import { Box } from '@mui/material'; import { IReaderProps } from '@/typings'; import { Page } from '@/components/reader/Page'; +import { requestManager } from '@/lib/requests/RequestManager.ts'; export function PagedPager(props: IReaderProps) { - const { pages, settings, setCurPage, initialPage, curPage, nextChapter, prevChapter } = props; + const { pages, settings, setCurPage, initialPage, curPage, nextChapter, prevChapter, chapter } = props; const selfRef = useRef(null); + useEffect(() => { + const imageRequests = pages.map((page) => { + const imageRequest = requestManager.requestImage(page.src); + imageRequest.response.catch(() => {}); + return imageRequest; + }); + + return () => { + imageRequests.forEach((imageRequest) => + imageRequest.abortRequest(new Error(`PagedPager::preload: chapter changed`)), + ); + }; + }, [chapter.id]); + const changePage = (newPage: number) => { setCurPage(newPage); window.scroll({ top: 0 });