From 9e34afbd5db813433cad5f509482bf90ccb91791 Mon Sep 17 00:00:00 2001
From: schroda <50052685+schroda@users.noreply.github.com>
Date: Tue, 12 May 2026 14:01:31 +0200
Subject: [PATCH] Fix mobile progress bar current page slot position
Regression 9595076dae0c109df7cb35c56225cd4a90d9bf2c
---
CHANGELOG.md | 1 +
.../ReaderProgressBarCurrentPageSlot.tsx | 64 ++++++++++---------
.../mobile/MobileReaderProgressBar.tsx | 4 +-
src/lib/HelperFunctions.ts | 3 +-
4 files changed, 40 insertions(+), 32 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ac7f0c81..d10d9981 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Fixed
- (**Reader**) Fix scrollbar appearing with "fit to widt/height/screen" page scale mode and applied safe area insets
+- (**Reader**) Fix wrongly positioned mobile progress bar current page indicator
## [20260509.01] (r3147) - 2026-05-09
diff --git a/src/features/reader/overlay/progress-bar/components/ReaderProgressBarCurrentPageSlot.tsx b/src/features/reader/overlay/progress-bar/components/ReaderProgressBarCurrentPageSlot.tsx
index 7e0096ea..1dccd613 100644
--- a/src/features/reader/overlay/progress-bar/components/ReaderProgressBarCurrentPageSlot.tsx
+++ b/src/features/reader/overlay/progress-bar/components/ReaderProgressBarCurrentPageSlot.tsx
@@ -13,6 +13,7 @@ import type { CurrentPageSlotProps } from '@/features/reader/overlay/progress-ba
import { applyStyles } from '@/base/utils/ApplyStyles.ts';
import { getProgressBarPositionInfo } from '@/features/reader/overlay/progress-bar/ReaderProgressBar.utils.tsx';
import { READER_PROGRESS_BAR_POSITION_TO_PLACEMENT } from '@/features/reader/settings/ReaderSettings.constants.tsx';
+import { coerceIn } from '@/lib/HelperFunctions.ts';
export const ReaderProgressBarCurrentPageSlot = ({
pageName,
@@ -22,34 +23,39 @@ export const ReaderProgressBarCurrentPageSlot = ({
boxProps,
children,
progressBarPosition,
-}: CurrentPageSlotProps & { children?: ReactNode }) => (
-
- {
+ const coercedTotalPages = coerceIn(pagesLength - 1, 1);
+ const coercedCurrentPagesIndex = coerceIn(currentPagesIndex - 1, 0, coercedTotalPages);
+
+ return (
+
- {children}
-
-
-);
+
+ {children}
+
+
+ );
+};
diff --git a/src/features/reader/overlay/progress-bar/mobile/MobileReaderProgressBar.tsx b/src/features/reader/overlay/progress-bar/mobile/MobileReaderProgressBar.tsx
index 48d570ae..b7df6b7e 100644
--- a/src/features/reader/overlay/progress-bar/mobile/MobileReaderProgressBar.tsx
+++ b/src/features/reader/overlay/progress-bar/mobile/MobileReaderProgressBar.tsx
@@ -186,7 +186,7 @@ const BaseMobileReaderProgressBar = ({
position: 'absolute',
...applyStyles(isVertical, {
top: 'calc(100% - 6px)',
- ...applyStyles(currentPagesIndex === 0, {
+ ...applyStyles(currentPagesIndex === 0 && pages.length > 1, {
top: '0',
}),
width: '75%',
@@ -194,7 +194,7 @@ const BaseMobileReaderProgressBar = ({
}),
...applyStyles(isHorizontal, {
left: 'calc(100% - 0px)',
- ...applyStyles(currentPagesIndex === 0, {
+ ...applyStyles(currentPagesIndex === 0 && pages.length > 1, {
left: '0',
}),
width: '6px',
diff --git a/src/lib/HelperFunctions.ts b/src/lib/HelperFunctions.ts
index 5b7c4cc6..536f061d 100644
--- a/src/lib/HelperFunctions.ts
+++ b/src/lib/HelperFunctions.ts
@@ -35,7 +35,8 @@ export const getValueFromObject = (obj: Record, key: string): T
return keys.reduce((acc, curr) => acc?.[curr], obj) as T;
};
-export const coerceIn = (value: number, min: number, max: number): number => Math.max(Math.min(value, max), min);
+export const coerceIn = (value: number, min: number, max: number = value): number =>
+ Math.max(Math.min(value, max), min);
export const noOp = () => {};