From 86f1905c7c7817ec38bf02f8aaaaa59aef8b55f0 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 10 May 2025 01:37:44 +0200 Subject: [PATCH] Cleanup ReaderControls#scroll --- src/modules/reader/services/ReaderControls.ts | 49 +++++++++---------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/src/modules/reader/services/ReaderControls.ts b/src/modules/reader/services/ReaderControls.ts index a0bde325..9c3c8416 100644 --- a/src/modules/reader/services/ReaderControls.ts +++ b/src/modules/reader/services/ReaderControls.ts @@ -131,38 +131,35 @@ export class ReaderControls { setIsOverlayVisible(false); setShowPreview(false); + const doScroll = ( + isAtStartForDirection: boolean, + isAtEndForDirection: boolean, + scrollToOptions: ScrollToOptions, + ) => { + if (isAtStartForDirection && offset === ScrollOffset.BACKWARD && isContinuousReadingModeActive) { + openChapter('previous'); + return; + } + + if (isAtEndForDirection && offset === ScrollOffset.FORWARD && isContinuousReadingModeActive) { + openChapter('next'); + return; + } + + element.scroll({ + ...scrollToOptions, + behavior: 'smooth', + }); + }; + switch (direction) { case ScrollDirection.X: - if (isAtStartXForDirection && offset === ScrollOffset.BACKWARD && isContinuousReadingModeActive) { - openChapter('previous'); - return; - } - - if (isAtEndXForDirection && offset === ScrollOffset.FORWARD && isContinuousReadingModeActive) { - openChapter('next'); - return; - } - - element.scroll({ + doScroll(isAtStartXForDirection, isAtEndXForDirection, { left: getNewScrollPosition(element.scrollLeft, element.clientWidth), - behavior: 'smooth', }); break; case ScrollDirection.Y: - if (isAtStartY && offset === ScrollOffset.BACKWARD && isContinuousReadingModeActive) { - openChapter('previous'); - return; - } - - if (isAtEndY && offset === ScrollOffset.FORWARD && isContinuousReadingModeActive) { - openChapter('next'); - return; - } - - element.scroll({ - top: getNewScrollPosition(element.scrollTop, element.clientHeight), - behavior: 'smooth', - }); + doScroll(isAtStartY, isAtEndY, { top: getNewScrollPosition(element.scrollTop, element.clientHeight) }); break; default: throw new Error(`Unexpected "ScrollDirection" (${direction})`);