mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-07-29 15:24:50 +02:00
Updates to LibraryController to use new Library model
- Additional validation on API endpoints - Removed success toast when reorder libraries
This commit is contained in:
parent
e0de59a4b6
commit
5d13faef33
12 changed files with 260 additions and 169 deletions
|
@ -1,4 +1,3 @@
|
|||
const uuidv4 = require('uuid').v4
|
||||
const Folder = require('./Folder')
|
||||
const LibrarySettings = require('./settings/LibrarySettings')
|
||||
const { filePathToPOSIX } = require('../utils/fileUtils')
|
||||
|
@ -28,15 +27,9 @@ class Library {
|
|||
}
|
||||
}
|
||||
|
||||
get folderPaths() {
|
||||
return this.folders.map((f) => f.fullPath)
|
||||
}
|
||||
get isPodcast() {
|
||||
return this.mediaType === 'podcast'
|
||||
}
|
||||
get isMusic() {
|
||||
return this.mediaType === 'music'
|
||||
}
|
||||
get isBook() {
|
||||
return this.mediaType === 'book'
|
||||
}
|
||||
|
@ -98,61 +91,5 @@ class Library {
|
|||
lastUpdate: this.lastUpdate
|
||||
}
|
||||
}
|
||||
|
||||
update(payload) {
|
||||
let hasUpdates = false
|
||||
|
||||
const keysToCheck = ['name', 'provider', 'mediaType', 'icon']
|
||||
keysToCheck.forEach((key) => {
|
||||
if (payload[key] && payload[key] !== this[key]) {
|
||||
this[key] = payload[key]
|
||||
hasUpdates = true
|
||||
}
|
||||
})
|
||||
|
||||
if (payload.settings && this.settings.update(payload.settings)) {
|
||||
hasUpdates = true
|
||||
}
|
||||
|
||||
if (!isNaN(payload.displayOrder) && payload.displayOrder !== this.displayOrder) {
|
||||
this.displayOrder = Number(payload.displayOrder)
|
||||
hasUpdates = true
|
||||
}
|
||||
if (payload.folders) {
|
||||
const newFolders = payload.folders.filter((f) => !f.id)
|
||||
const removedFolders = this.folders.filter((f) => !payload.folders.some((_f) => _f.id === f.id))
|
||||
|
||||
if (removedFolders.length) {
|
||||
const removedFolderIds = removedFolders.map((f) => f.id)
|
||||
this.folders = this.folders.filter((f) => !removedFolderIds.includes(f.id))
|
||||
}
|
||||
|
||||
if (newFolders.length) {
|
||||
newFolders.forEach((folderData) => {
|
||||
folderData.libraryId = this.id
|
||||
const newFolder = new Folder()
|
||||
newFolder.setData(folderData)
|
||||
this.folders.push(newFolder)
|
||||
})
|
||||
}
|
||||
|
||||
if (newFolders.length || removedFolders.length) {
|
||||
hasUpdates = true
|
||||
}
|
||||
}
|
||||
if (hasUpdates) {
|
||||
this.lastUpdate = Date.now()
|
||||
}
|
||||
return hasUpdates
|
||||
}
|
||||
|
||||
checkFullPathInLibrary(fullPath) {
|
||||
fullPath = filePathToPOSIX(fullPath)
|
||||
return this.folders.find((folder) => fullPath.startsWith(filePathToPOSIX(folder.fullPath)))
|
||||
}
|
||||
|
||||
getFolderById(id) {
|
||||
return this.folders.find((folder) => folder.id === id)
|
||||
}
|
||||
}
|
||||
module.exports = Library
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue