mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2024-12-20 19:06:06 +01:00
Update FolderWatcher to singleton
This commit is contained in:
parent
a8ec07cfc9
commit
a5ebd89817
@ -62,7 +62,6 @@ class Server {
|
|||||||
fs.mkdirSync(global.MetadataPath)
|
fs.mkdirSync(global.MetadataPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.watcher = new Watcher()
|
|
||||||
this.auth = new Auth()
|
this.auth = new Auth()
|
||||||
|
|
||||||
// Managers
|
// Managers
|
||||||
@ -70,7 +69,7 @@ class Server {
|
|||||||
this.backupManager = new BackupManager()
|
this.backupManager = new BackupManager()
|
||||||
this.abMergeManager = new AbMergeManager()
|
this.abMergeManager = new AbMergeManager()
|
||||||
this.playbackSessionManager = new PlaybackSessionManager()
|
this.playbackSessionManager = new PlaybackSessionManager()
|
||||||
this.podcastManager = new PodcastManager(this.watcher)
|
this.podcastManager = new PodcastManager()
|
||||||
this.audioMetadataManager = new AudioMetadataMangaer()
|
this.audioMetadataManager = new AudioMetadataMangaer()
|
||||||
this.rssFeedManager = new RssFeedManager()
|
this.rssFeedManager = new RssFeedManager()
|
||||||
this.cronManager = new CronManager(this.podcastManager, this.playbackSessionManager)
|
this.cronManager = new CronManager(this.podcastManager, this.playbackSessionManager)
|
||||||
@ -147,9 +146,9 @@ class Server {
|
|||||||
|
|
||||||
if (Database.serverSettings.scannerDisableWatcher) {
|
if (Database.serverSettings.scannerDisableWatcher) {
|
||||||
Logger.info(`[Server] Watcher is disabled`)
|
Logger.info(`[Server] Watcher is disabled`)
|
||||||
this.watcher.disabled = true
|
Watcher.disabled = true
|
||||||
} else {
|
} else {
|
||||||
this.watcher.initWatcher(libraries)
|
Watcher.initWatcher(libraries)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -435,7 +434,7 @@ class Server {
|
|||||||
*/
|
*/
|
||||||
async stop() {
|
async stop() {
|
||||||
Logger.info('=== Stopping Server ===')
|
Logger.info('=== Stopping Server ===')
|
||||||
await this.watcher.close()
|
Watcher.close()
|
||||||
Logger.info('Watcher Closed')
|
Logger.info('Watcher Closed')
|
||||||
|
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
|
@ -409,4 +409,4 @@ class FolderWatcher extends EventEmitter {
|
|||||||
}, 5000)
|
}, 5000)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module.exports = FolderWatcher
|
module.exports = new FolderWatcher()
|
||||||
|
@ -17,6 +17,7 @@ const naturalSort = createNewSortInstance({
|
|||||||
const LibraryScanner = require('../scanner/LibraryScanner')
|
const LibraryScanner = require('../scanner/LibraryScanner')
|
||||||
const Scanner = require('../scanner/Scanner')
|
const Scanner = require('../scanner/Scanner')
|
||||||
const Database = require('../Database')
|
const Database = require('../Database')
|
||||||
|
const Watcher = require('../Watcher')
|
||||||
const libraryFilters = require('../utils/queries/libraryFilters')
|
const libraryFilters = require('../utils/queries/libraryFilters')
|
||||||
const libraryItemsPodcastFilters = require('../utils/queries/libraryItemsPodcastFilters')
|
const libraryItemsPodcastFilters = require('../utils/queries/libraryItemsPodcastFilters')
|
||||||
const authorFilters = require('../utils/queries/authorFilters')
|
const authorFilters = require('../utils/queries/authorFilters')
|
||||||
@ -158,7 +159,7 @@ class LibraryController {
|
|||||||
SocketAuthority.emitter('library_added', library.toOldJSON(), userFilter)
|
SocketAuthority.emitter('library_added', library.toOldJSON(), userFilter)
|
||||||
|
|
||||||
// Add library watcher
|
// Add library watcher
|
||||||
this.watcher.addLibrary(library)
|
Watcher.addLibrary(library)
|
||||||
|
|
||||||
res.json(library.toOldJSON())
|
res.json(library.toOldJSON())
|
||||||
}
|
}
|
||||||
@ -440,7 +441,7 @@ class LibraryController {
|
|||||||
req.library.libraryFolders = await req.library.getLibraryFolders()
|
req.library.libraryFolders = await req.library.getLibraryFolders()
|
||||||
|
|
||||||
// Update watcher
|
// Update watcher
|
||||||
this.watcher.updateLibrary(req.library)
|
Watcher.updateLibrary(req.library)
|
||||||
|
|
||||||
hasUpdates = true
|
hasUpdates = true
|
||||||
}
|
}
|
||||||
@ -466,7 +467,7 @@ class LibraryController {
|
|||||||
*/
|
*/
|
||||||
async delete(req, res) {
|
async delete(req, res) {
|
||||||
// Remove library watcher
|
// Remove library watcher
|
||||||
this.watcher.removeLibrary(req.library)
|
Watcher.removeLibrary(req.library)
|
||||||
|
|
||||||
// Remove collections for library
|
// Remove collections for library
|
||||||
const numCollectionsRemoved = await Database.collectionModel.removeAllForLibrary(req.library.id)
|
const numCollectionsRemoved = await Database.collectionModel.removeAllForLibrary(req.library.id)
|
||||||
|
@ -5,6 +5,7 @@ const fs = require('../libs/fsExtra')
|
|||||||
const Logger = require('../Logger')
|
const Logger = require('../Logger')
|
||||||
const SocketAuthority = require('../SocketAuthority')
|
const SocketAuthority = require('../SocketAuthority')
|
||||||
const Database = require('../Database')
|
const Database = require('../Database')
|
||||||
|
const Watcher = require('../Watcher')
|
||||||
|
|
||||||
const libraryItemFilters = require('../utils/queries/libraryItemFilters')
|
const libraryItemFilters = require('../utils/queries/libraryItemFilters')
|
||||||
const patternValidation = require('../libs/nodeCron/pattern-validation')
|
const patternValidation = require('../libs/nodeCron/pattern-validation')
|
||||||
@ -557,10 +558,10 @@ class MiscController {
|
|||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'add':
|
case 'add':
|
||||||
this.watcher.onFileAdded(libraryId, path)
|
Watcher.onFileAdded(libraryId, path)
|
||||||
break
|
break
|
||||||
case 'unlink':
|
case 'unlink':
|
||||||
this.watcher.onFileRemoved(libraryId, path)
|
Watcher.onFileRemoved(libraryId, path)
|
||||||
break
|
break
|
||||||
case 'rename':
|
case 'rename':
|
||||||
const oldPath = req.body.oldPath
|
const oldPath = req.body.oldPath
|
||||||
@ -568,7 +569,7 @@ class MiscController {
|
|||||||
Logger.error(`[MiscController] Invalid request body for updateWatchedPath. oldPath is required for rename.`)
|
Logger.error(`[MiscController] Invalid request body for updateWatchedPath. oldPath is required for rename.`)
|
||||||
return res.sendStatus(400)
|
return res.sendStatus(400)
|
||||||
}
|
}
|
||||||
this.watcher.onFileRename(libraryId, oldPath, path)
|
Watcher.onFileRename(libraryId, oldPath, path)
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
Logger.error(`[MiscController] Invalid type for updateWatchedPath. type: "${type}"`)
|
Logger.error(`[MiscController] Invalid type for updateWatchedPath. type: "${type}"`)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
const Logger = require('../Logger')
|
const Logger = require('../Logger')
|
||||||
const SocketAuthority = require('../SocketAuthority')
|
const SocketAuthority = require('../SocketAuthority')
|
||||||
const Database = require('../Database')
|
const Database = require('../Database')
|
||||||
|
const Watcher = require('../Watcher')
|
||||||
|
|
||||||
const fs = require('../libs/fsExtra')
|
const fs = require('../libs/fsExtra')
|
||||||
|
|
||||||
@ -23,9 +24,7 @@ const AudioFile = require('../objects/files/AudioFile')
|
|||||||
const LibraryItem = require('../objects/LibraryItem')
|
const LibraryItem = require('../objects/LibraryItem')
|
||||||
|
|
||||||
class PodcastManager {
|
class PodcastManager {
|
||||||
constructor(watcher) {
|
constructor() {
|
||||||
this.watcher = watcher
|
|
||||||
|
|
||||||
this.downloadQueue = []
|
this.downloadQueue = []
|
||||||
this.currentDownload = null
|
this.currentDownload = null
|
||||||
|
|
||||||
@ -97,7 +96,7 @@ class PodcastManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ignores all added files to this dir
|
// Ignores all added files to this dir
|
||||||
this.watcher.addIgnoreDir(this.currentDownload.libraryItem.path)
|
Watcher.addIgnoreDir(this.currentDownload.libraryItem.path)
|
||||||
|
|
||||||
// Make sure podcast library item folder exists
|
// Make sure podcast library item folder exists
|
||||||
if (!(await fs.pathExists(this.currentDownload.libraryItem.path))) {
|
if (!(await fs.pathExists(this.currentDownload.libraryItem.path))) {
|
||||||
@ -151,7 +150,7 @@ class PodcastManager {
|
|||||||
SocketAuthority.emitter('episode_download_finished', this.currentDownload.toJSONForClient())
|
SocketAuthority.emitter('episode_download_finished', this.currentDownload.toJSONForClient())
|
||||||
SocketAuthority.emitter('episode_download_queue_updated', this.getDownloadQueueDetails())
|
SocketAuthority.emitter('episode_download_queue_updated', this.getDownloadQueueDetails())
|
||||||
|
|
||||||
this.watcher.removeIgnoreDir(this.currentDownload.libraryItem.path)
|
Watcher.removeIgnoreDir(this.currentDownload.libraryItem.path)
|
||||||
this.currentDownload = null
|
this.currentDownload = null
|
||||||
if (this.downloadQueue.length) {
|
if (this.downloadQueue.length) {
|
||||||
this.startPodcastEpisodeDownload(this.downloadQueue.shift())
|
this.startPodcastEpisodeDownload(this.downloadQueue.shift())
|
||||||
|
@ -45,8 +45,6 @@ class ApiRouter {
|
|||||||
this.abMergeManager = Server.abMergeManager
|
this.abMergeManager = Server.abMergeManager
|
||||||
/** @type {import('../managers/BackupManager')} */
|
/** @type {import('../managers/BackupManager')} */
|
||||||
this.backupManager = Server.backupManager
|
this.backupManager = Server.backupManager
|
||||||
/** @type {import('../Watcher')} */
|
|
||||||
this.watcher = Server.watcher
|
|
||||||
/** @type {import('../managers/PodcastManager')} */
|
/** @type {import('../managers/PodcastManager')} */
|
||||||
this.podcastManager = Server.podcastManager
|
this.podcastManager = Server.podcastManager
|
||||||
/** @type {import('../managers/AudioMetadataManager')} */
|
/** @type {import('../managers/AudioMetadataManager')} */
|
||||||
|
Loading…
Reference in New Issue
Block a user