* fix(metadata-refresh): change replace mode to REPLACE_ALL when editing metadata
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(metadata-refresh): update metadata update method to support customizable replace mode
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(metadata-refresh): refactor updateBookMetadata to use MetadataUpdateContext for improved clarity and flexibility
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(file-service): implement image downloading using RestTemplate with better headers and error handling
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat(config): enhance RestTemplate with custom connection and read timeouts
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* feat: add kobo reading progress sync
* fix: remove old variable references
* fix: avoid changing koreader behaviour
* fix: resolve typo in koreader progress
* fix: remove link between booklore progress and kobo sync progress
* feat: add unit tests for kobo reading status sync
* fix: remove unnecessary conversion value for kobo progress
* fix: resolve issue with kobo_progress beiong optional in template
* fix: update entitlement to provide existing reading progress back to kobo on sync
* fix: use stored bookmark before creating new bookmark
* fix: update default thresholds to full numbers. kobo doesn't report progress with any decimal places
* chore: update unit tests
* fix: remove decimal places in kobo settings progress threshold
* Autocomplete for publisher and series on book metadata edit screen
* Add autocomplete to bulk edit metadata form
* seriesName was missing the [disabled]="clearFields.seriesName" attribute
---------
Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
Adds a checkbox to the create/edit magic shelf dialog to set the shelf
as public.
If public then it shows up for all users.
Only admins can edit public shelves (edit options disabled for
non-admin)
* Enhancement: Import custom pagecount field from calibre
Calibre exports custom columns as JSON strings. This PR parses this JSON data and adds the pagecount value to booklore.
By convention, the calibre column must be named "pagecount".
* Don't use another external library for JSON
* refactor(tests): improve readability and consistency across services
- Replace field declarations with local variables in test setup methods to simplify code.
- Introduce constants for patterns and update regex logic in `BookMediaController`.
- Improve assertions and use more precise methods like `getFirst()` in tests.
- Utilize `EnumMap` and `EnumSet` for better performance and memory efficiency in metadata logic.
- Concatenate XML strings using multi-line strings or simplify where applicable.
- Deprecate and refactor user provisioning to ensure consistency and reuse of logic.
- Add additional parameters such as `watch` in `Library` entities and set defaults in builders.
- Replace manual comparator logic with core library features like `Comparator.reverseOrder`.
- Update metadata merging methods to use `getFirst()` for target values.
- Adjust mocked objects to include additional fields in validation methods.
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* refactor(service): remove deprecated user provisioning method
- Remove `provisionRemoteUser` method marked as deprecated in `UserProvisioningService`.
- Encourage use of `provisionRemoteUserFromHeaders` as the preferred entry point.
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
Fixes a bug preventing import of books with duplicate filenames in
different sub-folders.
The path relativization in FileUtils.getRelativeSubPath would fail in
some cases, yielding an empty sub-path. This caused a database
unique index violation as only the filename was saved as the filePath.
This commit fixes the issue by normalizing both paths before
relativization. Adds FileUtilsTest.java to validate the fix.
Fixes#1499