From 577f3bead9a12c56c8067b3b8f246769ff2c2850 Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 4 Oct 2021 22:11:42 -0500 Subject: [PATCH] Support for libraries and folder mapping, updating static cover path, detect reader.txt --- client/components/app/Appbar.vue | 40 +- client/components/app/BookShelf.vue | 2 +- .../components/app/BookShelfCategorized.vue | 2 +- client/components/app/SideRail.vue | 11 +- client/components/cards/BookCover.vue | 2 +- client/components/cards/GroupCard.vue | 5 +- client/components/cards/GroupCover.vue | 2 +- client/components/modals/EditLibraryModal.vue | 45 ++ client/components/modals/LibrariesModal.vue | 99 +++ .../components/modals/edit-tabs/Download.vue | 2 - .../modals/libraries/EditLibrary.vue | 154 +++++ .../modals/libraries/FolderChooser.vue | 165 +++++ .../modals/libraries/LibraryItem.vue | 67 ++ client/components/tables/LibrariesTable.vue | 77 +++ client/components/tables/UsersTable.vue | 130 ++++ client/components/ui/EditableText.vue | 58 ++ client/components/ui/ToggleSwitch.vue | 6 +- client/components/widgets/CloseButton.vue | 33 + client/layouts/default.vue | 89 ++- client/nuxt.config.js | 4 +- client/pages/config/index.vue | 150 ++--- client/pages/index.vue | 8 +- .../library/{ => _library/bookshelf}/_id.vue | 10 +- client/pages/library/_library/index.vue | 37 ++ client/pages/oops.vue | 23 + client/store/audiobooks.js | 40 +- client/store/index.js | 36 +- client/store/libraries.js | 144 +++++ client/store/scanners.js | 27 + server/ApiController.js | 157 ++++- server/CoverController.js | 2 +- server/Db.js | 132 ++-- server/Scanner.js | 601 +++++++++++------- server/Server.js | 363 ++++++----- server/Watcher.js | 225 ++++--- server/objects/AudioFile.js | 4 - server/objects/Audiobook.js | 178 +++++- server/objects/Book.js | 18 +- server/objects/Folder.js | 36 ++ server/objects/Library.js | 95 +++ server/objects/ServerSettings.js | 3 + server/utils/audioFileScanner.js | 3 +- server/utils/scandir.js | 31 +- 43 files changed, 2548 insertions(+), 768 deletions(-) create mode 100644 client/components/modals/EditLibraryModal.vue create mode 100644 client/components/modals/LibrariesModal.vue create mode 100644 client/components/modals/libraries/EditLibrary.vue create mode 100644 client/components/modals/libraries/FolderChooser.vue create mode 100644 client/components/modals/libraries/LibraryItem.vue create mode 100644 client/components/tables/LibrariesTable.vue create mode 100644 client/components/tables/UsersTable.vue create mode 100644 client/components/ui/EditableText.vue create mode 100644 client/components/widgets/CloseButton.vue rename client/pages/library/{ => _library/bookshelf}/_id.vue (83%) create mode 100644 client/pages/library/_library/index.vue create mode 100644 client/pages/oops.vue create mode 100644 client/store/libraries.js create mode 100644 client/store/scanners.js create mode 100644 server/objects/Folder.js create mode 100644 server/objects/Library.js diff --git a/client/components/app/Appbar.vue b/client/components/app/Appbar.vue index b04ec7f5..e6bc3b4f 100644 --- a/client/components/app/Appbar.vue +++ b/client/components/app/Appbar.vue @@ -7,13 +7,25 @@ arrow_back

AudioBookshelf

- + + + + + +
+ + + + +

{{ libraryName }}

+
+
@@ -66,11 +78,17 @@ export default { } }, computed: { + currentLibrary() { + return this.$store.getters['libraries/getCurrentLibrary'] + }, + libraryName() { + return this.currentLibrary ? this.currentLibrary.name : 'unknown' + }, isHome() { - return this.$route.name === 'index' + return this.$route.name === 'library-library' }, showBack() { - return this.$route.name !== 'library-id' && !this.isHome + return this.$route.name !== 'library-library-bookshelf-id' && !this.isHome }, user() { return this.$store.state.user.user @@ -78,7 +96,6 @@ export default { isRootUser() { return this.$store.getters['user/getIsRoot'] }, - username() { return this.user ? this.user.username : 'err' }, @@ -125,6 +142,9 @@ export default { } }, methods: { + clickLibrary() { + this.$store.commit('libraries/setShowModal', true) + }, async back() { var popped = await this.$store.dispatch('popRoute') var backTo = popped || '/' diff --git a/client/components/app/BookShelf.vue b/client/components/app/BookShelf.vue index ed62546b..62ebf1f1 100644 --- a/client/components/app/BookShelf.vue +++ b/client/components/app/BookShelf.vue @@ -216,7 +216,7 @@ export default { } }, scan() { - this.$root.socket.emit('scan') + this.$root.socket.emit('scan', this.$store.state.libraries.currentLibraryId) } }, updated() { diff --git a/client/components/app/BookShelfCategorized.vue b/client/components/app/BookShelfCategorized.vue index 38b19ff7..7a279a3e 100644 --- a/client/components/app/BookShelfCategorized.vue +++ b/client/components/app/BookShelfCategorized.vue @@ -143,7 +143,7 @@ export default { } }, scan() { - this.$root.socket.emit('scan') + this.$root.socket.emit('scan', this.$store.state.libraries.currentLibraryId) } }, mounted() { diff --git a/client/components/app/SideRail.vue b/client/components/app/SideRail.vue index 930ada30..f8e24c24 100644 --- a/client/components/app/SideRail.vue +++ b/client/components/app/SideRail.vue @@ -1,7 +1,7 @@