@@ -7,84 +7,21 @@ interface SoftwareInfo {
77 firmware_version : string
88}
99
10- interface GitHubRelease {
11- tag_name : string
12- html_url : string
13- published_at : string
14- name : string
15- }
16-
1710interface VersionState {
1811 frontendVersion : string
1912 firmwareVersion : string | null
2013 firmwareVersionLoading : boolean
2114 firmwareVersionError : string | null
22- latestFirmwareRelease : GitHubRelease | null
23- latestFrontendRelease : GitHubRelease | null
24- releasesLoading : boolean
25- releasesError : string | null
26- }
27-
28- const GITHUB_FIRMWARE_REPO = 'OpenScan-org/OpenScan3'
29- const GITHUB_FRONTEND_REPO = 'OpenScan-org/OpenScan3-Client'
30-
31- const stripVersionMetadata = ( version : string ) => version . replace ( / [ - + ] .* $ / , '' )
32-
33- function compareVersions ( current : string , latest : string ) : number {
34- const normalize = ( v : string ) =>
35- stripVersionMetadata ( v . replace ( / ^ v / , '' ) )
36- . split ( '.' )
37- . map ( Number )
38- const currentParts = normalize ( current )
39- const latestParts = normalize ( latest )
40-
41- for ( let i = 0 ; i < Math . max ( currentParts . length , latestParts . length ) ; i ++ ) {
42- const c = currentParts [ i ] || 0
43- const l = latestParts [ i ] || 0
44- if ( c < l ) return - 1
45- if ( c > l ) return 1
46- }
47- return 0
4815}
4916
5017export const useVersionStore = defineStore ( 'version' , {
5118 state : ( ) : VersionState => ( {
5219 frontendVersion : packageJson . version ?? '0.0.0' ,
5320 firmwareVersion : null ,
5421 firmwareVersionLoading : false ,
55- firmwareVersionError : null ,
56- latestFirmwareRelease : null ,
57- latestFrontendRelease : null ,
58- releasesLoading : false ,
59- releasesError : null
22+ firmwareVersionError : null
6023 } ) ,
6124
62- getters : {
63- firmwareUpdateAvailable ( ) : boolean {
64- if ( ! this . firmwareVersion || ! this . latestFirmwareRelease ) return false
65- return compareVersions ( this . firmwareVersion , this . latestFirmwareRelease . tag_name ) < 0
66- } ,
67-
68- frontendUpdateAvailable ( ) : boolean {
69- if ( ! this . latestFrontendRelease ) return false
70- return compareVersions ( this . frontendVersion , this . latestFrontendRelease . tag_name ) < 0
71- } ,
72-
73- anyUpdateAvailable ( ) : boolean {
74- return this . firmwareUpdateAvailable || this . frontendUpdateAvailable
75- } ,
76-
77- latestFirmwareVersion ( ) : string | null {
78- const tag = this . latestFirmwareRelease ?. tag_name
79- return tag ? stripVersionMetadata ( tag ) : null
80- } ,
81-
82- latestFrontendVersion ( ) : string | null {
83- const tag = this . latestFrontendRelease ?. tag_name
84- return tag ? stripVersionMetadata ( tag ) : null
85- }
86- } ,
87-
8825 actions : {
8926 async fetchFirmwareVersion ( ) {
9027 if ( this . firmwareVersionLoading ) return
@@ -111,42 +48,8 @@ export const useVersionStore = defineStore('version', {
11148 }
11249 } ,
11350
114- async fetchLatestReleases ( ) {
115- if ( this . releasesLoading ) return
116-
117- this . releasesLoading = true
118- this . releasesError = null
119-
120- try {
121- const [ firmwareResponse , frontendResponse ] = await Promise . all ( [
122- fetch ( `https://api.github.com/repos/${ GITHUB_FIRMWARE_REPO } /releases/latest` ) ,
123- fetch ( `https://api.github.com/repos/${ GITHUB_FRONTEND_REPO } /releases/latest` )
124- ] )
125-
126- if ( firmwareResponse . ok ) {
127- this . latestFirmwareRelease = await firmwareResponse . json ( )
128- }
129-
130- if ( frontendResponse . ok ) {
131- this . latestFrontendRelease = await frontendResponse . json ( )
132- }
133-
134- if ( ! firmwareResponse . ok && ! frontendResponse . ok ) {
135- this . releasesError = 'Failed to fetch release information'
136- }
137- } catch ( error ) {
138- console . error ( 'Failed to fetch latest releases:' , error )
139- this . releasesError = error instanceof Error ? error . message : 'Unknown error'
140- } finally {
141- this . releasesLoading = false
142- }
143- } ,
144-
14551 async initialize ( ) {
146- await Promise . all ( [
147- this . fetchFirmwareVersion ( ) ,
148- this . fetchLatestReleases ( )
149- ] )
52+ await this . fetchFirmwareVersion ( )
15053 }
15154 }
15255} )
0 commit comments