From d368988899f844a5ee5392809c37da747cf2bded Mon Sep 17 00:00:00 2001 From: advplyr Date: Sat, 26 Feb 2022 16:34:54 -0600 Subject: [PATCH] Add:Disable watcher library specific #378 --- .../modals/libraries/EditLibrary.vue | 31 ++++++++++++++----- server/Watcher.js | 8 +++-- server/objects/Library.js | 8 +++++ 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/client/components/modals/libraries/EditLibrary.vue b/client/components/modals/libraries/EditLibrary.vue index ed7db18d..9c437712 100644 --- a/client/components/modals/libraries/EditLibrary.vue +++ b/client/components/modals/libraries/EditLibrary.vue @@ -1,7 +1,7 @@ @@ -51,7 +61,8 @@ export default { name: '', provider: '', folders: [], - showDirectoryPicker: false + showDirectoryPicker: false, + disableWatcher: false } }, computed: { @@ -69,10 +80,13 @@ export default { var newfolderpaths = this.folderPaths.join(',') var origfolderpaths = this.library.folders.map((f) => f.fullPath).join(',') - return newfolderpaths === origfolderpaths && this.name === this.library.name && this.provider === this.library.provider + return newfolderpaths === origfolderpaths && this.name === this.library.name && this.provider === this.library.provider && this.disableWatcher === this.library.disableWatcher }, providers() { return this.$store.state.scanners.providers + }, + globalWatcherDisabled() { + return this.$store.getters['getServerSetting']('scannerDisableWatcher') } }, methods: { @@ -88,6 +102,7 @@ export default { this.name = this.library ? this.library.name : '' this.provider = this.library ? this.library.provider : '' this.folders = this.library ? this.library.folders.map((p) => ({ ...p })) : [] + this.disableWatcher = this.library ? !!this.library.disableWatcher : false this.showDirectoryPicker = false }, selectFolder(fullPath) { @@ -113,7 +128,8 @@ export default { var newLibraryPayload = { name: this.name, provider: this.provider, - folders: this.folders + folders: this.folders, + disableWatcher: this.disableWatcher } this.$emit('update:processing', true) @@ -146,7 +162,8 @@ export default { var newLibraryPayload = { name: this.name, provider: this.provider, - folders: this.folders + folders: this.folders, + disableWatcher: this.disableWatcher } this.$emit('update:processing', true) diff --git a/server/Watcher.js b/server/Watcher.js index c7457ecd..18a828a4 100644 --- a/server/Watcher.js +++ b/server/Watcher.js @@ -68,17 +68,19 @@ class FolderWatcher extends EventEmitter { initWatcher(libraries) { libraries.forEach((lib) => { - this.buildLibraryWatcher(lib) + if (!lib.disableWatcher) { + this.buildLibraryWatcher(lib) + } }) } addLibrary(library) { - if (this.disabled) return + if (this.disabled || library.disableWatcher) return this.buildLibraryWatcher(library) } updateLibrary(library) { - if (this.disabled) return + if (this.disabled || library.disableWatcher) return var libwatcher = this.libraryWatchers.find(lib => lib.id === library.id) if (libwatcher) { libwatcher.name = library.name diff --git a/server/objects/Library.js b/server/objects/Library.js index e62c54e1..1596892f 100644 --- a/server/objects/Library.js +++ b/server/objects/Library.js @@ -9,6 +9,7 @@ class Library { this.displayOrder = 1 this.icon = 'database' this.provider = 'google' + this.disableWatcher = false this.lastScan = 0 @@ -31,6 +32,7 @@ class Library { this.displayOrder = library.displayOrder || 1 this.icon = library.icon || 'database' this.provider = library.provider || 'google' + this.disableWatcher = !!library.disableWatcher this.createdAt = library.createdAt this.lastUpdate = library.lastUpdate @@ -44,6 +46,7 @@ class Library { displayOrder: this.displayOrder, icon: this.icon, provider: this.provider, + disableWatcher: this.disableWatcher, createdAt: this.createdAt, lastUpdate: this.lastUpdate } @@ -68,6 +71,7 @@ class Library { } this.displayOrder = data.displayOrder || 1 this.icon = data.icon || 'database' + this.disableWatcher = !!data.disableWatcher this.createdAt = Date.now() this.lastUpdate = Date.now() } @@ -82,6 +86,10 @@ class Library { this.provider = payload.provider hasUpdates = true } + if (payload.disableWatcher !== this.disableWatcher) { + this.disableWatcher = !!payload.disableWatcher + hasUpdates = true + } if (!isNaN(payload.displayOrder) && payload.displayOrder !== this.displayOrder) { this.displayOrder = Number(payload.displayOrder) hasUpdates = true