* 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"
* Extract chapter actions into "Chapters"
* Extract chapter action menu into component
* Rename "SelectionFABActionItem" to "MenuItem"
* Decouple "MenuItem" from "SelectionFAB"
* Use "MenuItem" in "ActionMenus"
* Merge chapter action menus
* Simplify chapter "mark as read" action
* Validate backup before starting restore process
In case sources were missing, the user was never informed and thus, did not know which sources were required for all manga to work
* Reset file input after restoring
Otherwise, the same backup file can't be restored until the page gets refreshed/re-opened
* Use app routing to open reader
Otherwise, the app loses the navigation history and won't open the last page (library) when closing the reader
* Prevent setting 0 as grid width
After the change of 4ebe6494f6c97c0d064c617f70b36682e6aedcb2, closing the reader and coming back to the library resulted in a single manga per row, due to the grids width being 0.
It's currently not possible to filter out non library mangas from the mangas field of categories, thus, the totalCount of mangas in a category might be greater than what is actually displayed in the library.
* Move "SearchSettings" into "LibrarySettings"
* Change property "setOpen" to "onClose" for "CategorySelect"
* Optionally show category selection when adding manga to library
* Update "ignore filters" translation
* Move "ignore_filters" setting to "metadataServerSettings"
After a manga got added to the library, the category selection dialog did not show the categories the manga got automatically added to.
The selection only got updated after the dialog got closed and opened again
Regression was introduced with 446deeae06
* Extend "IMangaGridProps" from "DefaultGridProps"
* Move library manga filtering into hook
* Add logic to select mangas
* Add manga actions
* Remove cache only policy for category mangas
Unclear why this was added
* Prevent SelectionFAB from being hidden by the mobile footer
On e.g. the library page, the footer is visible and thus, the fab was not completely visible
* Update categories of manga only after clicking "OK"
Previously, selecting a category resulted in an immediate mutation.
To be able to reuse the "CategorySelect" component to change the categories of multiple mangas at once, this behaviour is not suited.
* Add action to change categories of multiple mangas
* Cancel selection mode after removal from library
The mangas would still be selected and other action could get performed. However, this should only be possible for mangas that are in the library
* Remove unintentionally added console log
Accidentally added with 980da657d9
E.g. in case a manga was already loaded through the category mangas query, the query for that specific manga should not run against the server if it hasn't been executed before
* Introduce "selectable collection" hook
* Extract "select all" button into component
* Make "SelectionFABActionItem" reusable
Was to tightly coupled to chapters
* Make "SelectionFAB" reusable
Was to tightly coupled to chapters
The fix of e4beafb11f only worked in dev env and not in prod.
This prevents the navigation state update from getting triggered in case the path has changed in the meantime
Unclear what is causing the error or why this is fixing it, but without requesting the categories total count, the mutation fails on the first execution with "Uncaught (in promise) ApolloError: Cannot convert object to primitive value"
Translated using Weblate (Spanish)
Spanish: currently translated at 99.6% (327 of 328 strings)
Translations update from Hosted Weblate
Translated using Weblate (Chinese (Simplified))
Chinese (Simplified): currently translated at 96.2% (286 of 297 strings)
Translations update from Hosted Weblate
Translated using Weblate (Spanish)
Spanish: currently translated at 86.7% (256 of 295 strings)
Translations update from Hosted Weblate
Translated using Weblate (Chinese (Simplified))
Chinese (Simplified): currently translated at 96.9% (286 of 295 strings)
Translations update from Hosted Weblate
Translated using Weblate (Chinese (Simplified))
Chinese (Simplified): currently translated at 96.9% (286 of 295 strings)
Translations update from Hosted Weblate
Translated using Weblate (Chinese (Simplified))
Chinese (Simplified): currently translated at 98.7% (233 of 236 strings)
Translations update from Hosted Weblate
Translated using Weblate (Spanish)
Spanish: currently translated at 100.0% (236 of 236 strings)
Translations update from Hosted Weblate
Translated using Weblate (Spanish)
Spanish: currently translated at 100.0% (227 of 227 strings)
Translations update from Hosted Weblate
Translated using Weblate (Spanish)
Spanish: currently translated at 100.0% (214 of 214 strings)
Translations update from Hosted Weblate
Translated using Weblate (Spanish)
Spanish: currently translated at 100.0% (214 of 214 strings)
Translations update from Hosted Weblate
Translated using Weblate (French)
French: currently translated at 70.0% (147 of 210 strings)
Translations update from Hosted Weblate
Translated using Weblate (Spanish)
Spanish: currently translated at 100.0% (210 of 210 strings)
Translations update from Hosted Weblate
Translated using Weblate (Spanish)
Spanish: currently translated at 100.0% (202 of 202 strings)
Translations update from Hosted Weblate
Translated using Weblate (French)
French: currently translated at 54.2% (109 of 201 strings)
Co-authored-by: Alexandre Journet <alexandre.journet@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ibaraki Douji <daynesmorgan33@gmail.com>
Co-authored-by: Nite07 <admin@nite07.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: misaka10843 <misaka10843@outlook.jp>
Co-authored-by: 蓝云Reyes <i@muir.fun>
Translate-URL: https://hosted.weblate.org/projects/suwayomi/tachidesk-webui/es/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/tachidesk-webui/fr/
Translate-URL: https://hosted.weblate.org/projects/suwayomi/tachidesk-webui/zh_Hans/
Translation: Suwayomi/Tachidesk-WebUI
* [Tooling] Select git commit author correctly
Caused the credit for a commit without a pr id to show as "@[object Object]"
* [Tooling] Fix typo in file name
* [Tooling] Use total commit count from webUI repos master branch
The scroll position was persisted when switching to a different page.
Thus, when the current page was scrolled down and the next page was also scrollable, the top of the new page was not visible
Is not required anymore since "Link" of react-router-dom is a "<a>" element now anyway.
It also caused the following warning
"react-dom.development.js:86 Warning: React does not recognize the `directLink` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `directlink` instead. If you accidentally passed it from a parent component, remove it from the DOM element"
* 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
* Exclude the current chapter in the "mark prev as read" action
* Prevent unnecessary request for first chapter
In case "mark prev as read" gets called for the first chapter, the is no chapter to mark as read, thus, no request has to be sent