mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-05-31 20:25:34 -04:00
Update:Prefer epub ebook file when setting ebook #1825, validate ebookLocation
This commit is contained in:
parent
9547824aaa
commit
fde07d26e5
@ -67,6 +67,12 @@ export default {
|
|||||||
if (!this.libraryItemId) return
|
if (!this.libraryItemId) return
|
||||||
return this.$store.getters['user/getUserMediaProgress'](this.libraryItemId)
|
return this.$store.getters['user/getUserMediaProgress'](this.libraryItemId)
|
||||||
},
|
},
|
||||||
|
savedEbookLocation() {
|
||||||
|
if (!this.userMediaProgress?.ebookLocation) return null
|
||||||
|
// Validate ebookLocation is an epubcfi
|
||||||
|
if (!String(this.userMediaProgress.ebookLocation).startsWith('epubcfi')) return null
|
||||||
|
return this.userMediaProgress.ebookLocation
|
||||||
|
},
|
||||||
localStorageLocationsKey() {
|
localStorageLocationsKey() {
|
||||||
return `ebookLocations-${this.libraryItemId}`
|
return `ebookLocations-${this.libraryItemId}`
|
||||||
},
|
},
|
||||||
@ -197,7 +203,7 @@ export default {
|
|||||||
},
|
},
|
||||||
/** @param {string} location - CFI of the new location */
|
/** @param {string} location - CFI of the new location */
|
||||||
relocated(location) {
|
relocated(location) {
|
||||||
if (this.userMediaProgress?.ebookLocation === location.start.cfi) {
|
if (this.savedEbookLocation === location.start.cfi) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,7 +239,7 @@ export default {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// load saved progress
|
// load saved progress
|
||||||
reader.rendition.display(this.userMediaProgress?.ebookLocation || reader.book.locations.start)
|
reader.rendition.display(this.savedEbookLocation || reader.book.locations.start)
|
||||||
|
|
||||||
// load style
|
// load style
|
||||||
reader.rendition.themes.default({ '*': { color: '#fff!important', 'background-color': 'rgb(35 35 35)!important' } })
|
reader.rendition.themes.default({ '*': { color: '#fff!important', 'background-color': 'rgb(35 35 35)!important' } })
|
||||||
|
@ -95,7 +95,9 @@ export default {
|
|||||||
return this.$store.getters['user/getUserMediaProgress'](this.libraryItemId)
|
return this.$store.getters['user/getUserMediaProgress'](this.libraryItemId)
|
||||||
},
|
},
|
||||||
savedPage() {
|
savedPage() {
|
||||||
return Number(this.userMediaProgress?.ebookLocation || 0)
|
// Validate ebookLocation is a number
|
||||||
|
if (!this.userMediaProgress?.ebookLocation || isNaN(this.userMediaProgress.ebookLocation)) return 0
|
||||||
|
return Number(this.userMediaProgress.ebookLocation)
|
||||||
},
|
},
|
||||||
pdfDocInitParams() {
|
pdfDocInitParams() {
|
||||||
return {
|
return {
|
||||||
|
@ -437,16 +437,19 @@ class LibraryItem {
|
|||||||
|
|
||||||
if (this.mediaType === 'book') {
|
if (this.mediaType === 'book') {
|
||||||
// Add/update ebook file (ebooks that were removed are removed in checkScanData)
|
// Add/update ebook file (ebooks that were removed are removed in checkScanData)
|
||||||
this.libraryFiles.forEach((lf) => {
|
if (this.media.ebookFile) {
|
||||||
if (lf.fileType === 'ebook') {
|
const matchingLibraryFile = this.libraryFiles.find(lf => lf.ino === this.media.ebookFile.ino)
|
||||||
if (!this.media.ebookFile) {
|
if (matchingLibraryFile && this.media.ebookFile.updateFromLibraryFile(matchingLibraryFile)) {
|
||||||
this.media.setEbookFile(lf)
|
hasUpdated = true
|
||||||
hasUpdated = true
|
|
||||||
} else if (this.media.ebookFile.ino == lf.ino && this.media.ebookFile.updateFromLibraryFile(lf)) { // Update existing ebookFile
|
|
||||||
hasUpdated = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
} else {
|
||||||
|
// Prefer epub ebook then fallback to first other ebook file
|
||||||
|
const ebookLibraryFile = this.libraryFiles.find(lf => lf.isEBookFile && lf.metadata.format === 'epub') || this.libraryFiles.find(lf => lf.isEBookFile)
|
||||||
|
if (ebookLibraryFile) {
|
||||||
|
this.media.setEbookFile(ebookLibraryFile)
|
||||||
|
hasUpdated = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set cover image if not set
|
// Set cover image if not set
|
||||||
|
@ -50,6 +50,10 @@ class LibraryFile {
|
|||||||
return this.fileType === 'audio' || this.fileType === 'ebook' || this.fileType === 'video'
|
return this.fileType === 'audio' || this.fileType === 'ebook' || this.fileType === 'video'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get isEBookFile() {
|
||||||
|
return this.fileType === 'ebook'
|
||||||
|
}
|
||||||
|
|
||||||
get isOPFFile() {
|
get isOPFFile() {
|
||||||
return this.metadata.ext === '.opf'
|
return this.metadata.ext === '.opf'
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user