From c5f91ec508284466da9c6da0c7d74089159a4b93 Mon Sep 17 00:00:00 2001 From: advplyr Date: Sat, 13 Aug 2022 18:18:42 -0500 Subject: [PATCH] Add:Separate setting for alt bookshelf view on home page --- .../components/app/BookShelfCategorized.vue | 5 +--- client/components/app/LazyBookshelf.vue | 7 +++--- client/pages/config/index.vue | 16 +++++++++++++ client/plugins/constants.js | 3 +++ client/store/index.js | 9 ++++++++ client/store/libraries.js | 4 +++- server/objects/settings/ServerSettings.js | 23 ++++++++++++++----- 7 files changed, 52 insertions(+), 15 deletions(-) diff --git a/client/components/app/BookShelfCategorized.vue b/client/components/app/BookShelfCategorized.vue index 8b306ada..ceb79237 100644 --- a/client/components/app/BookShelfCategorized.vue +++ b/client/components/app/BookShelfCategorized.vue @@ -70,11 +70,8 @@ export default { libraryName() { return this.$store.getters['libraries/getCurrentLibraryName'] }, - bookshelfView() { - return this.$store.getters['getServerSetting']('bookshelfView') - }, isAlternativeBookshelfView() { - return this.bookshelfView === this.$constants.BookshelfView.TITLES + return this.$store.getters['getHomeBookshelfView'] === this.$constants.BookshelfView.TITLES }, bookCoverWidth() { var coverSize = this.$store.getters['user/getUserSetting']('bookshelfCoverSize') diff --git a/client/components/app/LazyBookshelf.vue b/client/components/app/LazyBookshelf.vue index b4597842..38412364 100644 --- a/client/components/app/LazyBookshelf.vue +++ b/client/components/app/LazyBookshelf.vue @@ -112,17 +112,16 @@ export default { coverAspectRatio() { return this.$store.getters['libraries/getBookCoverAspectRatio'] }, - bookshelfView() { - return this.$store.getters['getServerSetting']('bookshelfView') - }, sortingIgnorePrefix() { return this.$store.getters['getServerSetting']('sortingIgnorePrefix') }, isCoverSquareAspectRatio() { return this.coverAspectRatio == 1 }, + bookshelfView() { + return this.$store.getters['getBookshelfView'] + }, isAlternativeBookshelfView() { - // if (!this.isEntityBook) return false // Only used for bookshelf showing books return this.bookshelfView === this.$constants.BookshelfView.TITLES }, hasFilter() { diff --git a/client/pages/config/index.vue b/client/pages/config/index.vue index 816fad22..c6f39fd3 100644 --- a/client/pages/config/index.vue +++ b/client/pages/config/index.vue @@ -61,6 +61,15 @@

--> +
+ + +

+ Alternative bookshelf view for home page + info_outlined +

+
+
@@ -271,6 +280,7 @@ export default { isResettingLibraryItems: false, updatingServerSettings: false, useSquareBookCovers: false, + homeUseAlternativeBookshelfView: false, useAlternativeBookshelfView: false, isPurgingCache: false, newServerSettings: {}, @@ -362,6 +372,11 @@ export default { coverAspectRatio: val ? this.$constants.BookCoverAspectRatio.SQUARE : this.$constants.BookCoverAspectRatio.STANDARD }) }, + updateHomeAlternativeBookshelfView(val) { + this.updateServerSettings({ + homeBookshelfView: val ? this.$constants.BookshelfView.TITLES : this.$constants.BookshelfView.STANDARD + }) + }, updateAlternativeBookshelfView(val) { this.updateServerSettings({ bookshelfView: val ? this.$constants.BookshelfView.TITLES : this.$constants.BookshelfView.STANDARD @@ -393,6 +408,7 @@ export default { this.useSquareBookCovers = this.newServerSettings.coverAspectRatio === this.$constants.BookCoverAspectRatio.SQUARE + this.homeUseAlternativeBookshelfView = this.newServerSettings.homeBookshelfView === this.$constants.BookshelfView.TITLES this.useAlternativeBookshelfView = this.newServerSettings.bookshelfView === this.$constants.BookshelfView.TITLES }, resetLibraryItems() { diff --git a/client/plugins/constants.js b/client/plugins/constants.js index 27884222..e7da4cc9 100644 --- a/client/plugins/constants.js +++ b/client/plugins/constants.js @@ -75,6 +75,9 @@ const Hotkeys = { } } +export { + Constants +} export default ({ app }, inject) => { inject('constants', Constants) inject('keynames', KeyNames) diff --git a/client/store/index.js b/client/store/index.js index 723bfd05..df313576 100644 --- a/client/store/index.js +++ b/client/store/index.js @@ -1,5 +1,6 @@ import { checkForUpdate, currentVersion } from '@/plugins/version' import Vue from 'vue' +const { Constants } = require('../plugins/constants') export const state = () => ({ Source: null, @@ -45,6 +46,14 @@ export const getters = { if (!state.streamLibraryItem) return null if (!episodeId) return state.streamLibraryItem.id == libraryItemId return state.streamLibraryItem.id == libraryItemId && state.streamEpisodeId == episodeId + }, + getBookshelfView: state => { + if (!state.serverSettings || isNaN(state.serverSettings.bookshelfView)) return Constants.BookshelfView.STANDARD + return state.serverSettings.bookshelfView + }, + getHomeBookshelfView: state => { + if (!state.serverSettings || isNaN(state.serverSettings.homeBookshelfView)) return Constants.BookshelfView.STANDARD + return state.serverSettings.homeBookshelfView } } diff --git a/client/store/libraries.js b/client/store/libraries.js index 54153f45..f4f8cd74 100644 --- a/client/store/libraries.js +++ b/client/store/libraries.js @@ -1,3 +1,5 @@ +const { Constants } = require('../plugins/constants') + export const state = () => ({ libraries: [], lastLoad: 0, @@ -49,7 +51,7 @@ export const getters = { }, getBookCoverAspectRatio: (state, getters) => { if (!getters.getCurrentLibrarySettings || isNaN(getters.getCurrentLibrarySettings.coverAspectRatio)) return 1 - return getters.getCurrentLibrarySettings.coverAspectRatio === 0 ? 1.6 : 1 + return getters.getCurrentLibrarySettings.coverAspectRatio === Constants.BookCoverAspectRatio.STANDARD ? 1.6 : 1 } } diff --git a/server/objects/settings/ServerSettings.js b/server/objects/settings/ServerSettings.js index b4c2149f..0f701f50 100644 --- a/server/objects/settings/ServerSettings.js +++ b/server/objects/settings/ServerSettings.js @@ -39,7 +39,11 @@ class ServerSettings { this.loggerScannerLogsToKeep = 2 // Cover + // TODO: Remove after mobile apps are configured to use library server settings this.coverAspectRatio = BookCoverAspectRatio.SQUARE + + // Bookshelf Display + this.homeBookshelfView = BookshelfView.STANDARD this.bookshelfView = BookshelfView.STANDARD // Podcasts @@ -80,13 +84,7 @@ class ServerSettings { this.scannerMaxThreads = isNullOrNaN(settings.scannerMaxThreads) ? 0 : Number(settings.scannerMaxThreads) this.storeCoverWithItem = !!settings.storeCoverWithItem - if (settings.storeCoverWithBook != undefined) { // storeCoverWithBook was old name of setting < v2 - this.storeCoverWithItem = !!settings.storeCoverWithBook - } this.storeMetadataWithItem = !!settings.storeMetadataWithItem - if (settings.storeMetadataWithBook != undefined) { // storeMetadataWithBook was old name of setting < v2 - this.storeMetadataWithItem = !!settings.storeMetadataWithBook - } this.rateLimitLoginRequests = !isNaN(settings.rateLimitLoginRequests) ? Number(settings.rateLimitLoginRequests) : 10 this.rateLimitLoginWindow = !isNaN(settings.rateLimitLoginWindow) ? Number(settings.rateLimitLoginWindow) : 10 * 60 * 1000 // 10 Minutes @@ -100,6 +98,7 @@ class ServerSettings { this.loggerScannerLogsToKeep = settings.loggerScannerLogsToKeep || 2 this.coverAspectRatio = !isNaN(settings.coverAspectRatio) ? settings.coverAspectRatio : BookCoverAspectRatio.SQUARE + this.homeBookshelfView = settings.homeBookshelfView || BookshelfView.STANDARD this.bookshelfView = settings.bookshelfView || BookshelfView.STANDARD this.sortingIgnorePrefix = !!settings.sortingIgnorePrefix @@ -110,6 +109,17 @@ class ServerSettings { this.logLevel = settings.logLevel || Logger.logLevel this.version = settings.version || null + // Migrations + if (settings.storeCoverWithBook != undefined) { // storeCoverWithBook was renamed to storeCoverWithItem in 2.0.0 + this.storeCoverWithItem = !!settings.storeCoverWithBook + } + if (settings.storeMetadataWithBook != undefined) { // storeMetadataWithBook was renamed to storeMetadataWithItem in 2.0.0 + this.storeMetadataWithItem = !!settings.storeMetadataWithBook + } + if (settings.homeBookshelfView == undefined) { // homeBookshelfView was added in 2.1.3 + this.homeBookshelfView = settings.bookshelfView + } + if (this.logLevel !== Logger.logLevel) { Logger.setLogLevel(this.logLevel) } @@ -140,6 +150,7 @@ class ServerSettings { loggerDailyLogsToKeep: this.loggerDailyLogsToKeep, loggerScannerLogsToKeep: this.loggerScannerLogsToKeep, coverAspectRatio: this.coverAspectRatio, + homeBookshelfView: this.homeBookshelfView, bookshelfView: this.bookshelfView, sortingIgnorePrefix: this.sortingIgnorePrefix, sortingPrefixes: [...this.sortingPrefixes],