* feat(settings): refactor and implement KOReader Sync settings page
Refactors the KOReader Sync settings section into its own dedicated page and implements the full connection and configuration flow.
The previous implementation in the main server settings was outdated and incomplete. This change aligns the frontend with the latest backend logic and provides a complete user experience.
Key changes include:
- Separated the UI into two states: a login form for initial connection and a configuration panel for existing connections.
- Implemented `connectKoSyncAccount` and `logoutKoSyncAccount` mutations to handle authentication with the KOReader Sync server.
- Updated the `SERVER_SETTINGS` GraphQL fragment to use the new `koreaderSyncStrategyForward` and `koreaderSyncStrategyBackward` fields, removing the deprecated `koreaderSyncStrategy`.
- Moved all KOReader Sync settings from the generic Server Settings page to a dedicated route at `/settings/koreader-sync`.
- Restructured and improved i18n keys for better clarity and consistency.
Ran `yarn gql:codegen` to regenerate GraphQL types and helpers.
* Extract credentials login into component
* Update to server changes and cleanup
---------
Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
Improves the image request logic by making it possible to check if an image is cached.
In case an image is cached, it does not need to be put into the image queue because it won't be sent to the server.
* feat(chapter): add "mark all as read" option
Added new translation key for "Mark all as read" and updated ChaptersToolbarMenu to use it in the tooltip when marking all chapters as read.
* refactor(i18n): create global download key for generic actions
* feat(i18n): add filter and sort string to chapter toolbar
* fix(i18n): update tooltip text for clear selection action
* apply `yarn lint --fix`
The `.toLocalLowerCase` is english-specific, this should be handled via
a dedicated translation like everywhere else, `global.value` is being
abused here
* 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>