Handle closing transition pages in paged pagers for single page chapters

In case a chapter only has a single page and the previous/next transition page was visible, it was not possible to go back to the chapters page, since it just opened the previous/next chapter instead
This commit is contained in:
schroda
2025-02-15 22:37:06 +01:00
parent 68603cf59e
commit cc7eca08d7

View File

@@ -378,53 +378,47 @@ export class ReaderControls {
return;
}
const areContinuousPagerTransitionPagesVisible =
isContinuousReadingModeActive && isATransitionPageVisibleFlag;
const isPreviousTransitionPageVisible =
(!isContinuousReadingModeActive && transitionPageMode === ReaderTransitionPageMode.PREVIOUS) ||
areContinuousPagerTransitionPagesVisible;
const isNextTransitionPageVisible =
(!isContinuousReadingModeActive && transitionPageMode === ReaderTransitionPageMode.NEXT) ||
areContinuousPagerTransitionPagesVisible;
const shouldOpenPreviousChapter =
isFirstPage && isATransitionPageVisibleFlag && convertedPage === 'previous' && !!previousChapter;
isFirstPage && isPreviousTransitionPageVisible && convertedPage === 'previous' && !!previousChapter;
if (shouldOpenPreviousChapter) {
openChapter('previous');
return;
}
const shouldOpenNextChapter =
isLastPage && isATransitionPageVisibleFlag && convertedPage === 'next' && !!nextChapter;
isLastPage && isNextTransitionPageVisible && convertedPage === 'next' && !!nextChapter;
if (shouldOpenNextChapter) {
openChapter('next');
return;
}
const isPreviousMode = convertedPage === 'previous';
const needToHideTransitionPage = isATransitionPageVisibleFlag && !isContinuousReadingModeActive;
switch (convertedPage) {
case 'previous':
if (isFirstPage) {
setTransitionPageMode(ReaderTransitionPageMode.PREVIOUS);
return;
}
if (needToHideTransitionPage) {
hideTransitionPage();
setPageToScrollToIndex(indexOfLastPage);
return;
}
setPageToScrollToIndex(previousPageIndex);
break;
case 'next':
if (isLastPage) {
setTransitionPageMode(ReaderTransitionPageMode.NEXT);
return;
}
if (needToHideTransitionPage) {
hideTransitionPage();
setPageToScrollToIndex(indexOfFirstPage);
return;
}
setPageToScrollToIndex(nextPageIndex);
break;
default:
throw new Error(`Unexpected "offset" (${page})`);
if (needToHideTransitionPage) {
hideTransitionPage();
setPageToScrollToIndex(isPreviousMode ? indexOfLastPage : indexOfFirstPage);
return;
}
const needToOpenTransitionPage = isFirstPage || isLastPage;
if (needToOpenTransitionPage) {
setTransitionPageMode(
isPreviousMode ? ReaderTransitionPageMode.PREVIOUS : ReaderTransitionPageMode.NEXT,
);
return;
}
setPageToScrollToIndex(isPreviousMode ? previousPageIndex : nextPageIndex);
},
[
direction,