Commit Graph

2503 Commits

Author SHA1 Message Date
schroda
d89fbf9cf5 Cleanup "useReaderPreserveScrollPosition" 2025-04-05 12:56:44 +02:00
schroda
da34c77f03 Only observe "ReaderChapterViewer" resize events for scroll position preservation
It's not necessary to observe all elements, since "ReaderChapterViewer" is the parent and thus increases/decreases in size in case its children change.
2025-04-05 12:50:14 +02:00
schroda
b37ff532f5 Fix reverted code after merge
For some reason github didn't show a merge conflict on the pr
2025-04-05 12:48:36 +02:00
Constantin Piber
4423dee14e Fix preserving scroll position on infinite scroll previous chapter load (#913)
When scrolling to the previous chapter, which has not been preloaded, the scroll position got lost due to the resulting layout shift

* Update scroll preserve by tracking cursor

* Clean up interface

* Observe just the wrappers instead of individual images

* Switch to `IntersectionObserver` for tracking active element

* Clean up adding of observations

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

---------

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
2025-04-05 12:45:52 +02:00
schroda
b3860e4351 Preserve current position on "reading direction" change 2025-04-05 01:06:59 +02:00
schroda
e1895b21e3 Use "ReaderChapterViewer" as "root" for "IntersectionObserver" for "infinite scroll"
Using the actual "document element" as the "intersection observer root" causes issues in case the available reader width is less than the viewport.
In these cases sometimes the previous/next chapter never loaded because the necessary intersection never fired.
2025-04-05 01:05:54 +02:00
schroda
0f49115b23 Keep rendered chapters on infinite scroll chapter change
The changes from 642708b8b3 didn't consider the case were the chapter change was triggered due to scrolling to the unloaded previous/next chapter with infinite scroll
2025-04-02 02:45:22 +02:00
schroda
642708b8b3 Immediately open previous/next chapter on reader nav bar button click
The logic didn't handle cases were the next/previous chapter wasn't loaded yet, which lead to the load happening in the background without any user feedback.
2025-04-02 02:27:01 +02:00
schroda
7a7a0dfa9c Fix tsc error 2025-04-02 01:25:20 +02:00
schroda
9ad1af4846 Prevent mui card ripple on child element click 2025-04-02 01:25:17 +02:00
schroda
517610ac6d Fix manga list option menu on mobile 2025-04-02 01:24:50 +02:00
schroda
c81dce8efe Remove margin between icons in "extensions actions" 2025-03-28 19:06:08 +01:00
schroda
e3934545b0 Change "large" IconButtons to default size 2025-03-28 19:05:21 +01:00
schroda
99f14e2f27 Internationalize ErrorBoundary 2025-03-28 18:47:29 +01:00
schroda
07a44ed02b Fix hidden manga track dialog error 2025-03-28 18:23:33 +01:00
schroda
7145c33fbb Preserve current page on reader width change only when necessary
The pages only change in size with specific "page scale modes".
Thus, if these modes are not active, the scroll position will not be lost.

There are different cases were even with these modes active, the scroll position won't get lost (e.g. "fit width" while no page is larger than the available width), but handling these would be too cumbersome.

Ideally the relative scroll position would be preserved, however, from testing a little that seems to not work too well
2025-03-27 19:49:53 +01:00
schroda
a9bdf076c1 Prevent confirmation dialog from shifting layout in reader 2025-03-27 19:49:52 +01:00
schroda
3c1cb539ad Add spacing to confirmation dialog buttons 2025-03-27 19:49:51 +01:00
schroda
62bd4fdfb2 Require library entry removal confirmation in reader 2025-03-27 19:49:50 +01:00
schroda
72fb053971 Add "scroll amount" setting 2025-03-27 19:49:49 +01:00
schroda
b93c2d95e5 Add hotkey to close reader 2025-03-27 19:49:44 +01:00
Constantin Piber
9322ed2b8e Make category setting subheading translatable (#911)
The `.toLocalLowerCase` is english-specific, this should be handled via
a dedicated translation like everywhere else, `global.value` is being
abused here
2025-03-27 19:48:57 +01:00
schroda
d3f973e95b Improve dynamic theme color performance for large images 2025-03-25 23:45:39 +01:00
schroda
a23f6d02bf Fix lint issue 2025-03-25 21:01:31 +01:00
schroda
5c770ffa62 Update available languages 2025-03-25 21:00:11 +01:00
Hosted Weblate
6be384f859 Translations update from Hosted Weblate
Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Constantin Piber <cp.piber@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Joshua Astray <ykxkykx@gmail.com>
Co-authored-by: Leonardo de Macedo Sartorello <leo.sartorello98@gmail.com>
Co-authored-by: MK <raroger1975@gmail.com>
Co-authored-by: Nguyễn Trung Đức <vaicato16@gmail.com>
Co-authored-by: Tycoon3819 <Tycoon3819@protonmail.com>
Co-authored-by: dasf <taokai1190769@hotmail.com>
Co-authored-by: plum7x <plumgift@hotmail.com>
Co-authored-by: 清水汐音 <chenzhongjie19940725@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/ar/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/bn/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/da/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/de/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/es/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/fil/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/fr/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/id/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/it/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/ja/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/ko/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/nl/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/pt/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/ru/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/sv/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/ta/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/th/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/tr/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/uk/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/vi/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/suwayomi-webui/zh_Hant/
Translation: Suwayomi/Suwayomi-WebUI
2025-03-25 20:55:50 +01:00
schroda
15c11ded34 Tweak dynamic theme dominant color detection
Currently, a lot of manga have the same whit/black-ish background color, which results of the thumbnails containing a lot of white/black colors.
These changes improve this a little

- reduce impact of white and black colors
- use "precision" mode of algorithm
2025-03-25 02:37:00 +01:00
schroda
6f8d5bb9dc Remove unnecessary styling II
Missed in 157a549cc7
2025-03-25 00:04:12 +01:00
schroda
157a549cc7 Remove unnecessary styling 2025-03-24 23:46:57 +01:00
schroda
2120390e93 Align card list styling with rest of lists 2025-03-24 23:45:48 +01:00
Constantin Piber
541eeb0445 Reader preserve current page on window resize (#905)
* Reader: Reset bounds on window size change

19f2d993 introduced a `minWidth` to make sure sizes are consistent over
chapter changes (or when images load later), but when the window itself
changes, this makes the reader incorrectly sized

* Reader: Update size on navbar width change

This happens mostly when the bar is pinned; same effect as previous
commit

* Reader: Attempt to set the page on resize

It's not perfect, but not changing position at all seems impossible due
to how resizes are handled by the browser (since we adjust our content
to the window size)

* Simplify and abstract reader size reset

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

* fix: Reader page full width was not properly calculated for static navbar

Only relevant for Fit Content, this did not properly consider the navbar
when the user clamps the content to a custom width

* Refactor: Put reader min sizes to reader itself instead of chapter

This allows some logic simplification.
The `ResizeObserver` can needs to be on an element without restrictions;
previously, the observer would not see the chapter elements get smaller,
since the `min-width` prevented it from shrinking. By applying to the
outer element, we still preserve the centering (since `margin: auto` is
also applied here), but allow the chapter itself to be smaller.

* Reader: Only scroll in continuous reading modes

* Reader: clean up size tracking

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

* Fixup previous commit stupidness

* Reader: move `minWidth`/`minHeight` back to chapter wrapper

* Apply suggestions from code review

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

* Also revert `fullWidth` calculation

* Simplify `chapterViewerSize`

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

* Move size logic entirely to hook

---------

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
2025-03-24 23:45:06 +01:00
Constantin Piber
c9c1b8625a Reader preserve current page on reader mode change (#906)
* Reader: Re-scroll on reader mode change

* Simplify reading mode restore

https://github.com/Suwayomi/Suwayomi-WebUI/pull/906#discussion_r2009147119

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

* Move effect as per suggestion

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

---------

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
2025-03-24 23:24:36 +01:00
Constantin Piber
8079cadae5 Basic modal for switching extension settings (#907)
* Basic modal for switching extension settings

* Improve network usage by including field in query directly

Requesting individually is stupid, when it's a field that is already
available on the server

* Improve extension slider usability

- Always render the element, fixes animations
- Store the selected item in state, allows the back-button to re-open
  dialog

* Update src/modules/extension/components/ExtensionOptions.tsx

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

* Update src/modules/extension/components/ExtensionOptions.tsx

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

* Fix suggestions

* Use dialog instead of optionsPanel

* Extension options remove redundant NSFW info

* Apply suggestions from code review

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

* Use proper dialog title and content for settings dialog

* Use `string | undefined` instead of `string | null` to satisfy `tsc`

---------

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
2025-03-24 23:24:12 +01:00
Constantin Piber
1fd7624e98 Fixes places inreader where navbar width was not considered (#908)
* Fixes two places where navbar was not considered

When set to static, the navbar consumes space, so `vw` units are not
enough.
On small screens, the `left`+`transform` approach does not work nicely,
so just use standard flex alignment, the container is already a flexbox.

* Change card also consider wide viewports

* Update src/modules/reader/components/viewer/ReaderTransitionPage.tsx

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>

* Reader: Apply new alignment code also to horizontal scroll mode

---------

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
2025-03-24 23:23:50 +01:00
schroda
dc88b42191 Fix preloading of reader pages
There were different issues with the direction the pages got preloaded.

- when resuming a chapter with an initial page > 1, it incorrectly preloaded leading pages instead of trailing ones.
- when going to the previous/next rendered chapter no pages got preloaded at all
2025-03-23 16:40:49 +01:00
schroda
ae29904ed2 Make "hideHistory" settings global 2025-03-23 04:04:09 +01:00
schroda
b673047517 Update to server gql library update changes 2025-03-23 04:04:08 +01:00
schroda
072c71c116 Handle graphql exception errors
Extract stack trace from error message and show it as an information that is collapsed by default
2025-03-22 20:37:43 +01:00
schroda
8fac3ce352 Handle white spaces in error messages 2025-03-22 03:21:09 +01:00
schroda
f570b7c9ed Optionally hide history 2025-03-22 01:16:38 +01:00
schroda
39a9b7e0ac Limit navbar titles to one line 2025-03-20 15:07:28 +01:00
schroda
1388b53567 Rename "Downloads queue" to "Download queue" 2025-03-20 15:07:01 +01:00
schroda
29656c5790 [skip ci] Fix github issue templates "labels" 2025-03-20 01:44:45 +01:00
schroda
3374ca3903 [skip ci] Update readme "feature" section 2025-03-20 01:03:47 +01:00
schroda
4363572e6f [skip ci] Update "bug report" template 2025-03-20 00:45:28 +01:00
schroda
771feca797 [skip ci] Fix "bug report" template 2025-03-20 00:39:01 +01:00
schroda
15788e01c6 Remove "issue moderator" workflow 2025-03-20 00:30:57 +01:00
schroda
97b37d3957 Update github issue templates 2025-03-20 00:30:53 +01:00
schroda
3ca4aa2eff Remove "Settings" from setting page titles 2025-03-17 12:07:02 +01:00
schroda
90c1d72d13 Sort "en.json" alphabetically 2025-03-17 12:07:00 +01:00