Commit Graph

263 Commits

Author SHA1 Message Date
schroda
283bc1f706 Wait till reader setting are set to show previews
Sometimes the reader settings state took too long to get set and the previews were shown using the default settings first, since they are set as the default values of the reader settings context, and then again for the final settings
2024-12-31 02:45:12 +01:00
schroda
14044af1cd Reset "transition page mode" on reader exit 2024-12-31 02:21:36 +01:00
schroda
740acf63fc Show default "reading mode" setting
Regression 6ca6864035
2024-12-31 01:08:13 +01:00
schroda
9b706d0c82 Delay "reading mode" and "tap zone" preview until reader is ready 2024-12-30 21:23:39 +01:00
schroda
f8d3be3911 Do not check for state change before set state call
Due to not including the states in the dependency array (to improve render performance), they do not include updated data and might cause an incorrect early exit.

E.g. in case a load error happened for a page whose loaded flag was already set to true, the pages load state never got updated again
2024-12-30 21:21:09 +01:00
schroda
95f95e770f Prevent TypeError and incorrect state updates for "pagesSpreadState"
Page spread state updates of an already closed chapter caused TypeErrors or incorrect state updates.
2024-12-30 21:03:13 +01:00
schroda
7c98bab43b Prevent TypeError and incorrect state updates for "pageLoadStates"
Page load state updates of an already closed chapter caused TypeErrors or incorrect state updates.
2024-12-30 21:03:10 +01:00
schroda
55dc9471d9 Hide chapter transition page in single/double pagers
Transition page got opened and never closed again due to not correctly detecting that a transition page is currently visible
2024-12-30 19:57:18 +01:00
schroda
1f3a3b6c39 Auto hide "tap zone layout" preview when opening reader 2024-12-30 19:41:49 +01:00
schroda
fa868ea222 Properly detect "reading mode" and "tap zone" changes for preview 2024-12-30 19:33:37 +01:00
schroda
45f46a05d0 Optionally show preview or "reading mode" and "tap zone overlay"
Shows a preview when opening the reader or when the values change
2024-12-30 16:51:39 +01:00
schroda
f3962646e6 Hide "tap zone overlay" on user action 2024-12-30 16:50:54 +01:00
schroda
6a32395234 Always show "tap zone layout" preview when necessary
In case the "tap zone layout" setting value got changed from or to the same value as the default value, the preview was never shown due to the canvas being reused and therefore not triggering the useEffect
2024-12-30 16:32:30 +01:00
schroda
6ca6864035 Make active reading mode default settings editable in reader 2024-12-30 14:52:09 +01:00
schroda
6bf3e297ef Open previous/next chapter at end of continuous pager via hotkey
For continuous pagers the chapter transition page is always visible regardless of the current "transitionPageMode".
However, this was not properly checked and thus, it wasn't considered to be visible and instead of opening the previous/next chapter, the transition page got set to be visible first and only with the second hotkey press did the chapter get opened
2024-12-30 14:12:11 +01:00
schroda
4fc4a8d9b3 Move library display options to global metadata
- showContinueReadingButton
- showDownloadBadge
- showUnreadBadge
2024-12-30 03:49:39 +01:00
schroda
8dc5ec339c Decrease "MIN_SCROLL_AMOUNT_PX" to 1px
Got removed from 00170c8e4a due to rebasing and squashing...
2024-12-30 02:19:17 +01:00
schroda
00170c8e4a Properly calculate auto scroll px amount
"scrollBy" and "scrollTo" require a change of at least 1px, otherwise, nothing will happen
2024-12-30 02:13:57 +01:00
schroda
ce49084a89 Auto open next page after first change in single/double pager 2024-12-30 02:13:57 +01:00
schroda
e2dd5ad211 Use animation frames for auto scrolling continuous pagers 2024-12-30 02:13:56 +01:00
schroda
8eae025d8f Use "coerceIn" util function 2024-12-29 23:41:27 +01:00
schroda
530ae1578f Prevent invalid values for "auto scroll speed"
The min/max limit was only acknowledged when the value was changed via MUIs step logic.
In case the number got inputted via keystrokes the limits did not get applied
2024-12-29 23:41:26 +01:00
schroda
06d0f7147a Update auto scroll direction on reader reading direction change 2024-12-29 23:41:25 +01:00
schroda
d90767c71c Add "increase/decrease auto scroll speed" hotkeys 2024-12-29 23:41:24 +01:00
schroda
3238103ca0 Fix "rtl" detection in "useMouseDragScroll"
"isRTL" was set to the direction value instead of correctly to the boolean flag indicating if it is the actual rtl direction value.

This didn't cause any issues because for ltr because for ltr the result of "scrollAtT0.current[X] - delta[X])" was never less than "-maxScrollPos[X]" and for rtl it always used the expected value since "isRTL" was truthy.
2024-12-29 22:14:44 +01:00
schroda
e459e94b71 Properly invert scroll direction in "useAutomaticScrolling" 2024-12-29 22:04:46 +01:00
schroda
732f27f319 Fix "rtl" detection in "useAutomaticScrolling" 2024-12-29 22:04:21 +01:00
schroda
74d9e21c76 Abort auto scroll interval for callback mode 2024-12-29 21:42:00 +01:00
schroda
a943d2f2bc Extract logic from "ReaderViewer" into functions and hooks 2024-12-29 21:38:31 +01:00
schroda
9438a2f626 Unmount "ReaderNavBarDesktop" on exit
Re-rendering the component isn't too expensive and unmounting it improves the re-rendering caused by page changes since it doesn't get updated.

This removes ~7ms on a "current page" state update and ~25ms caused by the chapter update due to the "last read page" change
2024-12-29 21:38:31 +01:00
schroda
94ee7d4958 Improve "page spread page state" updates
Since "pagesToSpreadState" isn't part of the dependency array and also would decrease the render performance if it was (see reasoning of c79f7cc874), the array reference might be out of date and thus, the guard might not work correctly
2024-12-29 21:38:24 +01:00
schroda
c79f7cc874 Improve "page load state" updates
Changes of d6ff85fdd3 decreased the render performance due to the "onLoad" function changing and causing all pages to re-render.
2024-12-29 17:21:37 +01:00
schroda
aee42d7bb1 Adjust "MobileReaderProgressBar" active dragging styling 2024-12-28 04:06:03 +01:00
schroda
3185449816 Improve "MobileReaderProgressBar" progress bar click/drag handling
Convert clicks on the progress bar in such a way, that there is a "padding" around the page "dots".
Thus, e.g. even if the click was actually for page 1, if it is inside page 2 padding, it will behave like it was a click for page 2
2024-12-28 04:05:29 +01:00
schroda
bc14b68507 Cleanup progress bar interaction handling 2024-12-28 02:33:33 +01:00
schroda
6bae3aaf3a Improve progress bar dragging detection 2024-12-28 02:33:06 +01:00
schroda
0c6872edb3 Improve progress bar rendering while dragging 2024-12-28 02:00:13 +01:00
schroda
347c88f240 Correctly check "page load state" before state update 2024-12-28 01:59:07 +01:00
schroda
c5630ca5ce Reset "pageToScrollToIndex" after page selection
In case the current page changed after selecting a page, the previously selected page couldn't be selected again since the "pageToScrollToIndex" was still set to this page
2024-12-28 01:28:12 +01:00
schroda
a69447384b Always open next page for auto scroll in single/double page mode
Depending on the reading direction, the previous page got opened instead of the next one.
2024-12-27 21:38:55 +01:00
schroda
3c57011f0c Fix margin of double pages with set reader width
Depending on the set reader width, the auto margin of the images took effect and separated the double pages.
However, for double pages, only the margin left/right depending on the page should be set, to properly center the pages without a gap between them
2024-12-27 21:00:02 +01:00
schroda
89138fadde Reserve only necessary space for "current page" text 2024-12-27 18:26:20 +01:00
schroda
d6ff85fdd3 Prevent unnecessary "page load state" updates
Only update state in case it has changed
2024-12-27 18:26:19 +01:00
schroda
3ca379c0f1 Properly update "StandardReaderProgressBar" slots on "progress bar position" change
"createProgressBarSlot" was never called in case the function reference changed but none of the passed arguments
2024-12-27 18:26:19 +01:00
schroda
052625a013 Adjust "MobileReaderProgressBar" styling
In case the current page is the first one, there will be now no visible progress shown anymore. The progress slider will now be exactly at the start of the progress bar.
2024-12-27 18:26:18 +01:00
schroda
3ae0207bed Apply "auto scroll speed" limits to slider input 2024-12-27 18:26:17 +01:00
schroda
6dd6fd8c51 Reduce "auto scroll speed" quick setting size 2024-12-27 04:38:39 +01:00
schroda
7201a34607 Preserve saved search filters on navigate back
The saved search got restored and then "navigate" was called to set the "query" in the url, this however caused the "location key" to change which then made it impossible to load the applied filters from the session storage when going back in the history
2024-12-27 04:11:02 +01:00
schroda
6c175d0b7f Add "started" library filter 2024-12-27 03:36:36 +01:00
schroda
7c0ce65683 Fix auto scroll related tsc issues 2024-12-27 03:36:34 +01:00