mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-09-06 17:51:08 +02:00
handle name duplicates and remove helper func
This commit is contained in:
parent
9ccdf305fe
commit
b9772a024c
@ -405,14 +405,33 @@ class MeController {
|
|||||||
return res.status(400).send('Invalid payload. ereaderDevices array required')
|
return res.status(400).send('Invalid payload. ereaderDevices array required')
|
||||||
}
|
}
|
||||||
|
|
||||||
const ereaderDevices = req.body.ereaderDevices
|
const userEReaderDevices = req.body.ereaderDevices
|
||||||
for (const device of ereaderDevices) {
|
for (const device of userEReaderDevices) {
|
||||||
if (!device.name || !device.email) {
|
if (!device.name || !device.email) {
|
||||||
return res.status(400).send('Invalid payload. ereaderDevices array items must have name and email')
|
return res.status(400).send('Invalid payload. ereaderDevices array items must have name and email')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const updated = Database.emailSettings.updateUserEReaderDevices(req.user, ereaderDevices)
|
const otherDevices = Database.emailSettings.ereaderDevices.filter((device) => {
|
||||||
|
return !Database.emailSettings.checkUserCanAccessDevice(device, req.user)
|
||||||
|
})
|
||||||
|
const ereaderDevices = otherDevices.concat(userEReaderDevices)
|
||||||
|
|
||||||
|
// Check for duplicate names
|
||||||
|
const nameSet = new Set()
|
||||||
|
const hasDupes = ereaderDevices.some((device) => {
|
||||||
|
if (nameSet.has(device.name)) {
|
||||||
|
return true // Duplicate found
|
||||||
|
}
|
||||||
|
nameSet.add(device.name)
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
|
||||||
|
if (hasDupes) {
|
||||||
|
return res.status(400).send('Invalid payload. Duplicate "name" field found.')
|
||||||
|
}
|
||||||
|
|
||||||
|
const updated = Database.emailSettings.update({ ereaderDevices })
|
||||||
if (updated) {
|
if (updated) {
|
||||||
await Database.updateSetting(Database.emailSettings)
|
await Database.updateSetting(Database.emailSettings)
|
||||||
SocketAuthority.clientEmitter('ereader-devices-updated', {
|
SocketAuthority.clientEmitter('ereader-devices-updated', {
|
||||||
|
@ -174,20 +174,5 @@ class EmailSettings {
|
|||||||
getEReaderDevice(deviceName) {
|
getEReaderDevice(deviceName) {
|
||||||
return this.ereaderDevices.find((d) => d.name === deviceName)
|
return this.ereaderDevices.find((d) => d.name === deviceName)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the ereader devices that belong to a specific user
|
|
||||||
*
|
|
||||||
* @param {import('../../models/User')} user
|
|
||||||
* @param {EreaderDeviceObject[]} userEReaderDevices
|
|
||||||
* @returns {boolean}
|
|
||||||
*/
|
|
||||||
updateUserEReaderDevices(user, userEReaderDevices) {
|
|
||||||
// Filter to get all devices the user can't access separate
|
|
||||||
// then merge with the updated user devices
|
|
||||||
const otherDevices = this.ereaderDevices.filter((device) => !this.checkUserCanAccessDevice(device, user))
|
|
||||||
const ereaderDevices = otherDevices.concat(userEReaderDevices)
|
|
||||||
return this.update({ ereaderDevices })
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
module.exports = EmailSettings
|
module.exports = EmailSettings
|
||||||
|
Loading…
Reference in New Issue
Block a user