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)
|
||||
}
|
||||
|
||||
this.watcher = new Watcher()
|
||||
this.auth = new Auth()
|
||||
|
||||
// Managers
|
||||
@ -70,7 +69,7 @@ class Server {
|
||||
this.backupManager = new BackupManager()
|
||||
this.abMergeManager = new AbMergeManager()
|
||||
this.playbackSessionManager = new PlaybackSessionManager()
|
||||
this.podcastManager = new PodcastManager(this.watcher)
|
||||
this.podcastManager = new PodcastManager()
|
||||
this.audioMetadataManager = new AudioMetadataMangaer()
|
||||
this.rssFeedManager = new RssFeedManager()
|
||||
this.cronManager = new CronManager(this.podcastManager, this.playbackSessionManager)
|
||||
@ -147,9 +146,9 @@ class Server {
|
||||
|
||||
if (Database.serverSettings.scannerDisableWatcher) {
|
||||
Logger.info(`[Server] Watcher is disabled`)
|
||||
this.watcher.disabled = true
|
||||
Watcher.disabled = true
|
||||
} else {
|
||||
this.watcher.initWatcher(libraries)
|
||||
Watcher.initWatcher(libraries)
|
||||
}
|
||||
}
|
||||
|
||||
@ -435,7 +434,7 @@ class Server {
|
||||
*/
|
||||
async stop() {
|
||||
Logger.info('=== Stopping Server ===')
|
||||
await this.watcher.close()
|
||||
Watcher.close()
|
||||
Logger.info('Watcher Closed')
|
||||
|
||||
return new Promise((resolve) => {
|
||||
|
@ -409,4 +409,4 @@ class FolderWatcher extends EventEmitter {
|
||||
}, 5000)
|
||||
}
|
||||
}
|
||||
module.exports = FolderWatcher
|
||||
module.exports = new FolderWatcher()
|
||||
|
@ -17,6 +17,7 @@ const naturalSort = createNewSortInstance({
|
||||
const LibraryScanner = require('../scanner/LibraryScanner')
|
||||
const Scanner = require('../scanner/Scanner')
|
||||
const Database = require('../Database')
|
||||
const Watcher = require('../Watcher')
|
||||
const libraryFilters = require('../utils/queries/libraryFilters')
|
||||
const libraryItemsPodcastFilters = require('../utils/queries/libraryItemsPodcastFilters')
|
||||
const authorFilters = require('../utils/queries/authorFilters')
|
||||
@ -158,7 +159,7 @@ class LibraryController {
|
||||
SocketAuthority.emitter('library_added', library.toOldJSON(), userFilter)
|
||||
|
||||
// Add library watcher
|
||||
this.watcher.addLibrary(library)
|
||||
Watcher.addLibrary(library)
|
||||
|
||||
res.json(library.toOldJSON())
|
||||
}
|
||||
@ -440,7 +441,7 @@ class LibraryController {
|
||||
req.library.libraryFolders = await req.library.getLibraryFolders()
|
||||
|
||||
// Update watcher
|
||||
this.watcher.updateLibrary(req.library)
|
||||
Watcher.updateLibrary(req.library)
|
||||
|
||||
hasUpdates = true
|
||||
}
|
||||
@ -466,7 +467,7 @@ class LibraryController {
|
||||
*/
|
||||
async delete(req, res) {
|
||||
// Remove library watcher
|
||||
this.watcher.removeLibrary(req.library)
|
||||
Watcher.removeLibrary(req.library)
|
||||
|
||||
// Remove collections for library
|
||||
const numCollectionsRemoved = await Database.collectionModel.removeAllForLibrary(req.library.id)
|
||||
|
@ -5,6 +5,7 @@ const fs = require('../libs/fsExtra')
|
||||
const Logger = require('../Logger')
|
||||
const SocketAuthority = require('../SocketAuthority')
|
||||
const Database = require('../Database')
|
||||
const Watcher = require('../Watcher')
|
||||
|
||||
const libraryItemFilters = require('../utils/queries/libraryItemFilters')
|
||||
const patternValidation = require('../libs/nodeCron/pattern-validation')
|
||||
@ -557,10 +558,10 @@ class MiscController {
|
||||
|
||||
switch (type) {
|
||||
case 'add':
|
||||
this.watcher.onFileAdded(libraryId, path)
|
||||
Watcher.onFileAdded(libraryId, path)
|
||||
break
|
||||
case 'unlink':
|
||||
this.watcher.onFileRemoved(libraryId, path)
|
||||
Watcher.onFileRemoved(libraryId, path)
|
||||
break
|
||||
case 'rename':
|
||||
const oldPath = req.body.oldPath
|
||||
@ -568,7 +569,7 @@ class MiscController {
|
||||
Logger.error(`[MiscController] Invalid request body for updateWatchedPath. oldPath is required for rename.`)
|
||||
return res.sendStatus(400)
|
||||
}
|
||||
this.watcher.onFileRename(libraryId, oldPath, path)
|
||||
Watcher.onFileRename(libraryId, oldPath, path)
|
||||
break
|
||||
default:
|
||||
Logger.error(`[MiscController] Invalid type for updateWatchedPath. type: "${type}"`)
|
||||
|
@ -1,6 +1,7 @@
|
||||
const Logger = require('../Logger')
|
||||
const SocketAuthority = require('../SocketAuthority')
|
||||
const Database = require('../Database')
|
||||
const Watcher = require('../Watcher')
|
||||
|
||||
const fs = require('../libs/fsExtra')
|
||||
|
||||
@ -23,9 +24,7 @@ const AudioFile = require('../objects/files/AudioFile')
|
||||
const LibraryItem = require('../objects/LibraryItem')
|
||||
|
||||
class PodcastManager {
|
||||
constructor(watcher) {
|
||||
this.watcher = watcher
|
||||
|
||||
constructor() {
|
||||
this.downloadQueue = []
|
||||
this.currentDownload = null
|
||||
|
||||
@ -97,7 +96,7 @@ class PodcastManager {
|
||||
}
|
||||
|
||||
// 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
|
||||
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_queue_updated', this.getDownloadQueueDetails())
|
||||
|
||||
this.watcher.removeIgnoreDir(this.currentDownload.libraryItem.path)
|
||||
Watcher.removeIgnoreDir(this.currentDownload.libraryItem.path)
|
||||
this.currentDownload = null
|
||||
if (this.downloadQueue.length) {
|
||||
this.startPodcastEpisodeDownload(this.downloadQueue.shift())
|
||||
|
@ -45,8 +45,6 @@ class ApiRouter {
|
||||
this.abMergeManager = Server.abMergeManager
|
||||
/** @type {import('../managers/BackupManager')} */
|
||||
this.backupManager = Server.backupManager
|
||||
/** @type {import('../Watcher')} */
|
||||
this.watcher = Server.watcher
|
||||
/** @type {import('../managers/PodcastManager')} */
|
||||
this.podcastManager = Server.podcastManager
|
||||
/** @type {import('../managers/AudioMetadataManager')} */
|
||||
|
Loading…
Reference in New Issue
Block a user