mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-29 17:52:24 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import packagejson from '../package.json'
 | |
| import axios from 'axios'
 | |
| 
 | |
| function parseSemver(ver) {
 | |
|   if (!ver) return null
 | |
|   var groups = ver.match(/^v((([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)$/)
 | |
|   if (groups && groups.length > 6) {
 | |
|     var total = Number(groups[3]) * 10000 + Number(groups[4]) * 100 + Number(groups[5])
 | |
|     if (isNaN(total)) {
 | |
|       console.warn('Invalid version total', groups[3], groups[4], groups[5])
 | |
|       return null
 | |
|     }
 | |
|     return {
 | |
|       total,
 | |
|       version: groups[2],
 | |
|       major: Number(groups[3]),
 | |
|       minor: Number(groups[4]),
 | |
|       patch: Number(groups[5]),
 | |
|       preRelease: groups[6] || null
 | |
|     }
 | |
|   } else {
 | |
|     console.warn('Invalid semver string', ver)
 | |
|   }
 | |
|   return null
 | |
| }
 | |
| export async function checkForUpdate() {
 | |
|   if (!packagejson.version) {
 | |
|     return
 | |
|   }
 | |
|   var currVerObj = parseSemver('v' + packagejson.version)
 | |
|   if (!currVerObj) {
 | |
|     console.error('Invalid version', packagejson.version)
 | |
|     return
 | |
|   }
 | |
|   var largestVer = null
 | |
|   await axios.get(`https://api.github.com/repos/advplyr/audiobookshelf/tags`).then((res) => {
 | |
|     var tags = res.data
 | |
|     if (tags && tags.length) {
 | |
|       tags.forEach((tag) => {
 | |
|         var verObj = parseSemver(tag.name)
 | |
|         if (verObj) {
 | |
|           if (!largestVer || largestVer.total < verObj.total) {
 | |
|             largestVer = verObj
 | |
|           }
 | |
|         }
 | |
|       })
 | |
|     }
 | |
|   })
 | |
|   if (!largestVer) {
 | |
|     console.error('No valid version tags to compare with')
 | |
|     return
 | |
|   }
 | |
|   return {
 | |
|     hasUpdate: largestVer.total > currVerObj.total,
 | |
|     latestVersion: largestVer.version,
 | |
|     githubTagUrl: `https://github.com/advplyr/audiobookshelf/releases/tag/v${largestVer.version}`,
 | |
|     currentVersion: currVerObj.version
 | |
|   }
 | |
| } |