Cleanup ReaderControls#scroll

This commit is contained in:
schroda
2025-05-10 01:37:44 +02:00
parent 40abcd828f
commit 86f1905c7c

View File

@@ -131,38 +131,35 @@ export class ReaderControls {
setIsOverlayVisible(false); setIsOverlayVisible(false);
setShowPreview(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) { switch (direction) {
case ScrollDirection.X: case ScrollDirection.X:
if (isAtStartXForDirection && offset === ScrollOffset.BACKWARD && isContinuousReadingModeActive) { doScroll(isAtStartXForDirection, isAtEndXForDirection, {
openChapter('previous');
return;
}
if (isAtEndXForDirection && offset === ScrollOffset.FORWARD && isContinuousReadingModeActive) {
openChapter('next');
return;
}
element.scroll({
left: getNewScrollPosition(element.scrollLeft, element.clientWidth), left: getNewScrollPosition(element.scrollLeft, element.clientWidth),
behavior: 'smooth',
}); });
break; break;
case ScrollDirection.Y: case ScrollDirection.Y:
if (isAtStartY && offset === ScrollOffset.BACKWARD && isContinuousReadingModeActive) { doScroll(isAtStartY, isAtEndY, { top: getNewScrollPosition(element.scrollTop, element.clientHeight) });
openChapter('previous');
return;
}
if (isAtEndY && offset === ScrollOffset.FORWARD && isContinuousReadingModeActive) {
openChapter('next');
return;
}
element.scroll({
top: getNewScrollPosition(element.scrollTop, element.clientHeight),
behavior: 'smooth',
});
break; break;
default: default:
throw new Error(`Unexpected "ScrollDirection" (${direction})`); throw new Error(`Unexpected "ScrollDirection" (${direction})`);