mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-30 18:12:25 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const FileMetadata = require('../metadata/FileMetadata')
 | |
| 
 | |
| class EBookFile {
 | |
|   constructor(file) {
 | |
|     this.ino = null
 | |
|     this.metadata = null
 | |
|     this.ebookFormat = null
 | |
|     this.addedAt = null
 | |
|     this.updatedAt = null
 | |
| 
 | |
|     if (file) {
 | |
|       this.construct(file)
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   construct(file) {
 | |
|     this.ino = file.ino
 | |
|     this.metadata = new FileMetadata(file.metadata)
 | |
|     this.ebookFormat = file.ebookFormat || this.metadata.format
 | |
|     this.addedAt = file.addedAt
 | |
|     this.updatedAt = file.updatedAt
 | |
|   }
 | |
| 
 | |
|   toJSON() {
 | |
|     return {
 | |
|       ino: this.ino,
 | |
|       metadata: this.metadata.toJSON(),
 | |
|       ebookFormat: this.ebookFormat,
 | |
|       addedAt: this.addedAt,
 | |
|       updatedAt: this.updatedAt
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   get isEpub() {
 | |
|     return this.ebookFormat === 'epub'
 | |
|   }
 | |
| 
 | |
|   setData(libraryFile) {
 | |
|     this.ino = libraryFile.ino
 | |
|     this.metadata = libraryFile.metadata.clone()
 | |
|     this.ebookFormat = libraryFile.metadata.format
 | |
|     this.addedAt = Date.now()
 | |
|     this.updatedAt = Date.now()
 | |
|   }
 | |
| 
 | |
|   updateFromLibraryFile(libraryFile) {
 | |
|     var hasUpdated = false
 | |
| 
 | |
|     if (this.metadata.update(libraryFile.metadata)) {
 | |
|       hasUpdated = true
 | |
|     }
 | |
| 
 | |
|     if (this.ebookFormat !== libraryFile.metadata.format) {
 | |
|       this.ebookFormat = libraryFile.metadata.format
 | |
|       hasUpdated = true
 | |
|     }
 | |
| 
 | |
|     return hasUpdated
 | |
|   }
 | |
| }
 | |
| module.exports = EBookFile |