mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-03-01 05:29:41 +00:00
feat: Enable series name editing with duplicate validation
- Remove disabled state from series name input in edit modal - Add duplicate name validation in SeriesController (resolves TODO) - Update nameIgnorePrefix when series name changes - Add frontend validation for duplicate series names - Add updateSeriesName method to PATCH series immediately on rename - Show backend error message in toast on failure - Add i18n string for duplicate name error message This enables users to rename existing series while preventing duplicate series names within the same library.
This commit is contained in:
parent
122fc34a75
commit
5431665dfe
4 changed files with 49 additions and 7 deletions
|
|
@ -6,6 +6,7 @@ const Database = require('../Database')
|
|||
const RssFeedManager = require('../managers/RssFeedManager')
|
||||
|
||||
const libraryItemsBookFilters = require('../utils/queries/libraryItemsBookFilters')
|
||||
const { getTitleIgnorePrefix } = require('../utils/index')
|
||||
|
||||
/**
|
||||
* @typedef RequestUserObject
|
||||
|
|
@ -62,7 +63,8 @@ class SeriesController {
|
|||
}
|
||||
|
||||
/**
|
||||
* TODO: Currently unused in the client, should check for duplicate name
|
||||
* PATCH /api/series/:id
|
||||
* Update series metadata (name, description)
|
||||
*
|
||||
* @param {SeriesControllerRequest} req
|
||||
* @param {Response} res
|
||||
|
|
@ -78,6 +80,17 @@ class SeriesController {
|
|||
if (!Object.keys(payload).length) {
|
||||
return res.status(400).send('No valid fields to update')
|
||||
}
|
||||
|
||||
// Check for duplicate series name in the same library
|
||||
if (payload.name && payload.name.toLowerCase() !== req.series.name.toLowerCase()) {
|
||||
const existingSeries = await Database.seriesModel.getByNameAndLibrary(payload.name, req.series.libraryId)
|
||||
if (existingSeries && existingSeries.id !== req.series.id) {
|
||||
return res.status(400).send('A series with that name already exists in this library')
|
||||
}
|
||||
// Update nameIgnorePrefix when name changes
|
||||
payload.nameIgnorePrefix = getTitleIgnorePrefix(payload.name)
|
||||
}
|
||||
|
||||
req.series.set(payload)
|
||||
if (req.series.changed()) {
|
||||
await req.series.save()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue