Merge branch 'advplyr:master' into master

This commit is contained in:
John 2025-07-10 22:26:56 -05:00 committed by GitHub
commit 3cdf16e86f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 38 additions and 27 deletions

View File

@ -198,7 +198,7 @@ export default {
return this.store.getters['user/getSizeMultiplier'] return this.store.getters['user/getSizeMultiplier']
}, },
dateFormat() { dateFormat() {
return this.store.state.serverSettings.dateFormat return this.store.getters['getServerSetting']('dateFormat')
}, },
_libraryItem() { _libraryItem() {
return this.libraryItem || {} return this.libraryItem || {}

View File

@ -71,7 +71,7 @@ export default {
return this.height * this.sizeMultiplier return this.height * this.sizeMultiplier
}, },
dateFormat() { dateFormat() {
return this.store.state.serverSettings.dateFormat return this.store.getters['getServerSetting']('dateFormat')
}, },
labelFontSize() { labelFontSize() {
if (this.width < 160) return 0.75 if (this.width < 160) return 0.75

View File

@ -79,10 +79,10 @@ export default {
return !this.bookmarks.find((bm) => Math.abs(this.currentTime - bm.time) < 1) return !this.bookmarks.find((bm) => Math.abs(this.currentTime - bm.time) < 1)
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
timeFormat() { timeFormat() {
return this.$store.state.serverSettings.timeFormat return this.$store.getters['getServerSetting']('timeFormat')
} }
}, },
methods: { methods: {

View File

@ -159,10 +159,10 @@ export default {
return 'Unknown' return 'Unknown'
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
timeFormat() { timeFormat() {
return this.$store.state.serverSettings.timeFormat return this.$store.getters['getServerSetting']('timeFormat')
}, },
isOpenSession() { isOpenSession() {
return !!this._session.open return !!this._session.open

View File

@ -144,7 +144,7 @@ export default {
expirationDateString() { expirationDateString() {
if (!this.expireDurationSeconds) return this.$strings.LabelPermanent if (!this.expireDurationSeconds) return this.$strings.LabelPermanent
const dateMs = Date.now() + this.expireDurationSeconds * 1000 const dateMs = Date.now() + this.expireDurationSeconds * 1000
return this.$formatDatetime(dateMs, this.$store.state.serverSettings.dateFormat, this.$store.state.serverSettings.timeFormat) return this.$formatDatetime(dateMs, this.$store.getters['getServerSetting']('dateFormat'), this.$store.getters['getServerSetting']('timeFormat'))
} }
}, },
methods: { methods: {

View File

@ -40,7 +40,7 @@ export default {
} }
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
releasesToShow() { releasesToShow() {
return this.versionData?.releasesToShow || [] return this.versionData?.releasesToShow || []

View File

@ -78,10 +78,10 @@ export default {
return this.$store.getters['user/getToken'] return this.$store.getters['user/getToken']
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
timeFormat() { timeFormat() {
return this.$store.state.serverSettings.timeFormat return this.$store.getters['getServerSetting']('timeFormat')
} }
}, },
methods: { methods: {

View File

@ -76,10 +76,10 @@ export default {
return usermap return usermap
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
timeFormat() { timeFormat() {
return this.$store.state.serverSettings.timeFormat return this.$store.getters['getServerSetting']('timeFormat')
} }
}, },
methods: { methods: {

View File

@ -112,7 +112,7 @@ export default {
return this.episode?.publishedAt return this.episode?.publishedAt
}, },
dateFormat() { dateFormat() {
return this.store.state.serverSettings.dateFormat return this.store.getters['getServerSetting']('dateFormat')
}, },
itemProgress() { itemProgress() {
return this.store.getters['user/getUserMediaProgress'](this.libraryItemId, this.episodeId) return this.store.getters['user/getUserMediaProgress'](this.libraryItemId, this.episodeId)

View File

@ -239,10 +239,10 @@ export default {
}) })
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
timeFormat() { timeFormat() {
return this.$store.state.serverSettings.timeFormat return this.$store.getters['getServerSetting']('timeFormat')
} }
}, },
methods: { methods: {

View File

@ -85,7 +85,7 @@ export default {
nextRun() { nextRun() {
if (!this.cronExpression) return '' if (!this.cronExpression) return ''
const parsed = this.$getNextScheduledDate(this.cronExpression) const parsed = this.$getNextScheduledDate(this.cronExpression)
return this.$formatJsDatetime(parsed, this.$store.state.serverSettings.dateFormat, this.$store.state.serverSettings.timeFormat) || '' return this.$formatJsDatetime(parsed, this.$store.getters['getServerSetting']('dateFormat'), this.$store.getters['getServerSetting']('timeFormat')) || ''
}, },
description() { description() {
if ((this.selectedInterval !== 'custom' || !this.selectedWeekdays.length) && this.selectedInterval !== 'daily') return '' if ((this.selectedInterval !== 'custom' || !this.selectedWeekdays.length) && this.selectedInterval !== 'daily') return ''

View File

@ -40,6 +40,7 @@ describe('LazySeriesCard', () => {
}, },
$store: { $store: {
getters: { getters: {
getServerSetting: () => 'MM/dd/yyyy',
'user/getUserCanUpdate': true, 'user/getUserCanUpdate': true,
'user/getUserMediaProgress': (id) => null, 'user/getUserMediaProgress': (id) => null,
'user/getSizeMultiplier': 1, 'user/getSizeMultiplier': 1,

View File

@ -78,10 +78,10 @@ export default {
}, },
computed: { computed: {
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
timeFormat() { timeFormat() {
return this.$store.state.serverSettings.timeFormat return this.$store.getters['getServerSetting']('timeFormat')
} }
}, },
methods: { methods: {

View File

@ -250,10 +250,10 @@ export default {
return user?.username || null return user?.username || null
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
timeFormat() { timeFormat() {
return this.$store.state.serverSettings.timeFormat return this.$store.getters['getServerSetting']('timeFormat')
}, },
numSelected() { numSelected() {
return this.listeningSessions.filter((s) => s.selected).length return this.listeningSessions.filter((s) => s.selected).length

View File

@ -129,10 +129,10 @@ export default {
return this.listeningSessions.sessions[0] return this.listeningSessions.sessions[0]
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
timeFormat() { timeFormat() {
return this.$store.state.serverSettings.timeFormat return this.$store.getters['getServerSetting']('timeFormat')
} }
}, },
methods: { methods: {

View File

@ -98,10 +98,10 @@ export default {
return this.$store.getters['users/getIsUserOnline'](this.user.id) return this.$store.getters['users/getIsUserOnline'](this.user.id)
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
timeFormat() { timeFormat() {
return this.$store.state.serverSettings.timeFormat return this.$store.getters['getServerSetting']('timeFormat')
} }
}, },
methods: { methods: {

View File

@ -193,7 +193,7 @@ export default {
return `${process.env.serverUrl}/api/items/${this.libraryItemId}/download?token=${this.userToken}` return `${process.env.serverUrl}/api/items/${this.libraryItemId}/download?token=${this.userToken}`
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
}, },
userIsAdminOrUp() { userIsAdminOrUp() {
return this.$store.getters['user/getIsAdminOrUp'] return this.$store.getters['user/getIsAdminOrUp']

View File

@ -141,7 +141,7 @@ export default {
return episodeIds return episodeIds
}, },
dateFormat() { dateFormat() {
return this.$store.state.serverSettings.dateFormat return this.$store.getters['getServerSetting']('dateFormat')
} }
}, },
methods: { methods: {

View File

@ -206,6 +206,11 @@ class LibraryItemScanner {
async scanPotentialNewLibraryItem(libraryItemPath, library, folder, isSingleMediaItem) { async scanPotentialNewLibraryItem(libraryItemPath, library, folder, isSingleMediaItem) {
const libraryItemScanData = await this.getLibraryItemScanData(libraryItemPath, library, folder, isSingleMediaItem) const libraryItemScanData = await this.getLibraryItemScanData(libraryItemPath, library, folder, isSingleMediaItem)
if (!libraryItemScanData.libraryFiles.length) {
Logger.info(`[LibraryItemScanner] Library item at path "${libraryItemPath}" has no files - ignoring`)
return null
}
const scanLogger = new ScanLogger() const scanLogger = new ScanLogger()
scanLogger.verbose = true scanLogger.verbose = true
scanLogger.setData('libraryItem', libraryItemScanData.relPath) scanLogger.setData('libraryItem', libraryItemScanData.relPath)

View File

@ -606,6 +606,11 @@ class LibraryScanner {
} else if (library.settings.audiobooksOnly && !hasAudioFiles(fileUpdateGroup, itemDir)) { } else if (library.settings.audiobooksOnly && !hasAudioFiles(fileUpdateGroup, itemDir)) {
Logger.debug(`[LibraryScanner] Folder update for relative path "${itemDir}" has no audio files`) Logger.debug(`[LibraryScanner] Folder update for relative path "${itemDir}" has no audio files`)
continue continue
} else if (!(await fs.pathExists(fullPath))) {
Logger.info(`[LibraryScanner] File update group "${itemDir}" does not exist - ignoring`)
itemGroupingResults[itemDir] = ScanResult.NOTHING
continue
} }
// Check if a library item is a subdirectory of this dir // Check if a library item is a subdirectory of this dir

View File

@ -109,7 +109,7 @@ function getIno(path) {
.stat(path, { bigint: true }) .stat(path, { bigint: true })
.then((data) => String(data.ino)) .then((data) => String(data.ino))
.catch((err) => { .catch((err) => {
Logger.error('[Utils] Failed to get ino for path', path, err) Logger.warn(`[Utils] Failed to get ino for path "${path}"`, err)
return null return null
}) })
} }