mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01: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 | ||||
|       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() { | ||||
|       return `ebookLocations-${this.libraryItemId}` | ||||
|     }, | ||||
| @ -197,7 +203,7 @@ export default { | ||||
|     }, | ||||
|     /** @param {string} location - CFI of the new location */ | ||||
|     relocated(location) { | ||||
|       if (this.userMediaProgress?.ebookLocation === location.start.cfi) { | ||||
|       if (this.savedEbookLocation === location.start.cfi) { | ||||
|         return | ||||
|       } | ||||
| 
 | ||||
| @ -233,7 +239,7 @@ export default { | ||||
|       }) | ||||
| 
 | ||||
|       // load saved progress | ||||
|       reader.rendition.display(this.userMediaProgress?.ebookLocation || reader.book.locations.start) | ||||
|       reader.rendition.display(this.savedEbookLocation || reader.book.locations.start) | ||||
| 
 | ||||
|       // load style | ||||
|       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) | ||||
|     }, | ||||
|     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() { | ||||
|       return { | ||||
|  | ||||
| @ -437,16 +437,19 @@ class LibraryItem { | ||||
| 
 | ||||
|     if (this.mediaType === 'book') { | ||||
|       // Add/update ebook file (ebooks that were removed are removed in checkScanData)
 | ||||
|       this.libraryFiles.forEach((lf) => { | ||||
|         if (lf.fileType === 'ebook') { | ||||
|           if (!this.media.ebookFile) { | ||||
|             this.media.setEbookFile(lf) | ||||
|             hasUpdated = true | ||||
|           } else if (this.media.ebookFile.ino == lf.ino && this.media.ebookFile.updateFromLibraryFile(lf)) { // Update existing ebookFile
 | ||||
|             hasUpdated = true | ||||
|           } | ||||
|       if (this.media.ebookFile) { | ||||
|         const matchingLibraryFile = this.libraryFiles.find(lf => lf.ino === this.media.ebookFile.ino) | ||||
|         if (matchingLibraryFile && this.media.ebookFile.updateFromLibraryFile(matchingLibraryFile)) { | ||||
|           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
 | ||||
|  | ||||
| @ -50,6 +50,10 @@ class LibraryFile { | ||||
|     return this.fileType === 'audio' || this.fileType === 'ebook' || this.fileType === 'video' | ||||
|   } | ||||
| 
 | ||||
|   get isEBookFile() { | ||||
|     return this.fileType === 'ebook' | ||||
|   } | ||||
| 
 | ||||
|   get isOPFFile() { | ||||
|     return this.metadata.ext === '.opf' | ||||
|   } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user