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],