Due to horizontally centering the flex-box items via "alignItems", the items did not stretch anymore, which is the default value for "alignItems" and thus, did not take up the available width.
Regression introduced with ab0ecf4da0
* Trigger download ahead while reading client side
* Trigger download ahead while reading earlier
Download ahead was only triggered once the chapter got marked as read
* Optionally ignore dupe chapters for download ahead
* Consider current chapters scanlator for dupe check
* Update download ahead related settings
- add new metadata setting for download ahead limit
- previous setting
- rename
- update usage (auto download new chapters limit)
* Select chapter to auto delete while reading depending on ignore dupe setting
Currently, the n-th to last chapter always got deleted ignoring if "ignore dupes" setting was enabled or not.
* Only auto delete chapter while reading if it is read
In case not the last read but the n-th to last read chapter should get auto deleted while reading, it currently just got deleted ignoring if it has been read or not.
Chapters are being fetched sorted by descending source order, thus, the next chapters index is less than the current one
Regression introduced with 7caea4e526
* Always fetch pages for not downloaded chapter
The pages of non downloaded chapters have to be re-fetched since the local data might be out of date which would result in page fetch failures
* Correctly check for loading state of chapter
For the first render of e.g. the next chapter, the "arePagesLoaded" flag was still true from the previous chapter which caused the loading state to incorrectly be false.
This caused pages to get requested which on server side potentially pointed to invalid urls and thus the requests failed.
* Use updated chapter in case page count changed
* Fix reader width
The margin: auto on the Box container for the image was preventing 100% width
to actually mean 100%.
Now that 100% is actually possible, I think fitPageToWindow makes more
sense as a default. Additionally, since the image can fill 100% of the
page, it can cover the ReaderNavBar, so set the z-index of the
ReaderNavBar so it's rendered on top of the image and clickable.
Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
* Support configuring reader width for DoublePage readers
Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
* Fix single page of DoublePageReader not being able to take up full width
In case the parent container is flex row, the container does not automatically take up 100% of the available width, thus, the page also was not able to take up 100% of the width
* Fix applying reader width to double pages
The set reader width can't be applied to each page of the double pages because otherwise it will already take up 100% of the available width with the setting only being at 50%.
Instead, the set width has to be divided by 2, so that both pages take up the set reader width
* Prevent double page spinner from being larger than 100% of the available width
* Update width styling of the page spinner
* Always center pages in the middle of the screen
* Take up full height fitting page to window height
---------
Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
* Create permanent subscriptions
The subscriptions have to be permanently open, otherwise, the cache gets outdated.
E.g. in case a view is open, which does not subscribe to the download updates, finished downloads are never received and thus, data of existing chapters/mangas in the cache get outdated
* [Codegen][Tool] Get latest data from cache for automatic chapter deletion after reading
The manga chapters query is on "standby" to prevent the reader from rerender in case the underlying query data updates, which would cause the reader to jump back to the beginning of the last read page.
Thus, when checking if the chapter should be automatically deleted, the data from the query can't be used, since it is outdated.
* Move menu components into new dir
* Move chapter components into new dir
* Extract menu helper functions
* Move "SelectionFAB" to "collection" dir
* Move debounce hook to global utils dir
* Rename manga "hooks" to "useRefreshManga"
* Add missing translations keys
* [Codegen] Update to latest server schema changes
* [VersionMapping] Require server version "r1431" for preview
* Rename "deleteChaptersAutoMarkedRead" metadata setting
* Add more options to auto delete chapters while reading
Makes it possible to delete the last to fifth to last read chapter instead of only being able to delete the last read chapter
* [Codegen] Request less fields for category mutations
* [Codegen] Request less fields for chapter mutations
* [Codegen] Request less fields for downloader mutations
* [Codegen] Request less fields for extension mutations
* [Codegen] Request less fields for manga mutations
* [Codegen] Request less fields for source mutations
* [Codegen] Request less fields for updater subscription
* [Codegen] Request less fields for downloader subscription
* [Codegen] Combine chapter update mutations
* Download next chapters when marking chapter as read while reading
* Add "auto delete chapter" settings
* Delete chapter after finished reading
* Delete chapters after marking them as read
* Improve "mark previous as read" action
Send only ids of chapters that are actually unread
In case the chapter is not downloaded, the chapters pages have to be always fetched, since there is a possibility, that the chapter data is so old, that the available pages data is outdated.
* Use "create-vite"s tsconfig files setup
The previous tsconfig file caused issues with vite throwing "missing identifiers of modules" errors
* Remove unused React imports
Starting with React 17 the nex JSX transform is being used
* Update i18next to v23.x
Update to version 23.2.7
* Use new "ParseKeys" (old: "TFuncKey") type
* Remove unnecessary casts to string
Not needed anymore with the latest version
This caused the chapter to be loaded with stale data (the old lastPageRead state) and then jumping to the actual lastPageRead after the latest data was received.
It's not possible to mutate the chapter when updating lastPageRead since this causes the reader to always jump back to the just set lastPageRead when scrolling
* Use alias "@" for imports
* Use alias "@" for imports - Fix imports
* Use alias "@" for imports - Prevent faulty "import/extensions" linting issue
For some reason the rule throws an error for alias imports
* Use alias "@" for imports - Update "no-relative-imports" eslint rule
* Update dependency "react-router-dom" to v6.x
Update to v6.11.2
* Update dependency "react-router-dom" to v6.x - Replace "Switch" with "Routes"
* Update dependency "react-router-dom" to v6.x - Relative paths
* Update dependency "react-router-dom" to v6.x - Nested routes
* Update dependency "react-router-dom" to v6.x - Prevent route warnings
- Route without an element causes a warning message.
- Routes with non-matching Route causes a warning message.
* Update dependency "react-router-dom" to v6.x - Replace "useHistory" with "useNavigate"
* Update dependency "react-router-dom" to v6.x - Fix "Link" usage
* Update dependency "react-router-dom" to v6.x - Overwrite "useParams" and "useLocations" typing
For both functions it's the users fault if they are getting used incorrectly.
It's inconvenient to always have to make sure the params exist (useParam) or to cast the return object to a specific type (useLocation)
- "useParams": Make generic type non-optional
- "useLocation": Add generic type
* Update dependency "react-router-dom" to v6.x - Fix use-query-params provider
* Update dependency "mui" to v5.x
Update to v5.13.3
Fixes issue of "SxProps" not being exported by "@mui/material"
* Update dependency "mui" to v5.x - Fix grid item size
Update to v5.13.3
Fixes issue of "SxProps" not being exported by "@mui/material"
* Update dependency "mui" to v5.x - Replace "ListItem" with "ListItemButton"
* Update dependency "mui" to v5.x - Fix tsc issue
* Update dependency "mui" to v5.x - Prevent reader white screen
Due to "initialChapter" being a function returning an object, it causes a re-render everytime due to it (the object) being used as a dependency.
This caused a white screen when skipping to the previous or next chapter
* Remove "getClient" usage from "metadata" util
* Remove "getClient" usage from "useRefreshManga" hook
* Remove "getClient" usage from "isDupChapter" util function
* Use correct endpoint for setting category metadata
"/meta" suffix was missing from url
* Use correct http method for updating manga metadata
* Introduce "RequestManager"
* Use "RequestManager" - Simple replacements
- Get rid of all "util/client" imports
- replace old requests with new "RequestManager"
- remove "fetcher" from global SWR config
instead of using the SWR hooks by themselves, the "requestManager" is supposed to be used
* Use "RequestManager" - Do requests via SWR hooks
Use SWR hooks at places where it's easily usable
* Prevent trailing slashes in the "baseUrl"
* Skip duplicate chapters in the Reader
* Debounce "end of page" handling in the reader
* Update keyboard event listener
In case the "go" function changed, the listeners have to be updated
* Fix i18n tsc issue
"t" can return null by default.
This was already disabled in the config, but it had no effect on tsc.
* Fix translation in "DefaultNavBar"
key was missing and since this is a constant the translation wouldn't update in case the language got changed after first load.
* Enable typing for i18n translation keys
* Add translation keys
* Rename file
".d.ts" files are files that are automatically generated during compilation (in case option is set) and shouldn't be created manually.
* Export types and interfaces
* Add missing imports
* add pagination to library and fix some prettier issues
* add genre search support like tachiyomi android app
* Search by genre like you do in tachiyomi mobile app
---------
Co-authored-by: akxer <>
* Correctly scroll to page
Using "curPage" as the "initialPage" broke "scrolling up".
The page got reset to the first page in that case
* Support resume and scrolling to page for "DoublePagedPager"
* Support resume and scrolling to page for "PagedPager"
* Prevent "ReaderNavBar" from disappearing in "VerticalPager"
Due to handling the overflow on the "root" div and the "nav bar" being sticky and having a combined with of 100vw with the "vertical pager", once the first page was reached, that was behind the 100vw, the "nav bar" got moved out of the screen.
This made using the "nav bar" unusable for the "vertical pager".
* [Prettier] Increase max line length to 120
100 is quite low, especially on modern monitors.
The length is also reached quite quickly with 4 spaces per tab depending on the indentation depth
* [Prettier] Increase max line length to 120 - Fix formatting
* [Prettier] Add "prettier"
Makes the formatting of the code consistent.
By using the eslint-plugin-prettier formatting issues will be highlighted as a lint error.
These errors will be auto fixed by running "lint --fix" (which can be done automatically on file save)
* [Prettier] Add "prettier" - Fix formatting