@@ -19,10 +19,8 @@ window.UpdateManagerV2 = class UpdateManagerV2 {
1919 // Eventi personalizzati
2020 this . eventTarget = new EventTarget ( ) ;
2121
22- // Inizializza il controllo automatico solo se non siamo in dev mode
23- if ( ! this . isDevelopmentMode ( ) ) {
24- this . startAutoCheck ( ) ;
25- }
22+ // Inizializza il controllo automatico sempre (ora funziona anche in dev mode)
23+ this . startAutoCheck ( ) ;
2624
2725 console . log ( '✅ UpdateManager v2 inizializzato (global)' ) ;
2826 }
@@ -106,8 +104,8 @@ window.UpdateManagerV2 = class UpdateManagerV2 {
106104
107105 throw new Error ( 'API versione non disponibile' ) ;
108106 } catch ( error ) {
109- console . warn ( '❌ Errore recupero versione:' , error ) ;
110- return '0.2.2' ; // fallback
107+ console . error ( '❌ Impossibile ottenere la versione dell\'app :' , error ) ;
108+ throw new Error ( 'Impossibile determinare la versione corrente dell\'applicazione' ) ;
111109 }
112110 }
113111
@@ -245,16 +243,18 @@ window.UpdateManagerV2 = class UpdateManagerV2 {
245243 * Avvia il controllo automatico degli aggiornamenti
246244 */
247245 startAutoCheck ( ) {
248- if ( this . autoCheck && ! this . checkInterval && ! this . isDevelopmentMode ( ) ) {
246+ if ( this . autoCheck && ! this . checkInterval ) {
249247 // Controlla ogni ora
250248 this . checkInterval = setInterval ( ( ) => {
249+ console . log ( '🔄 Controllo automatico periodico degli aggiornamenti...' ) ;
251250 this . checkForUpdates ( false ) ; // silent check
252251 } , 60 * 60 * 1000 ) ;
253252
254- // Controllo iniziale dopo 30 secondi
253+ // Controllo iniziale dopo 5 secondi
255254 setTimeout ( ( ) => {
256- this . checkForUpdates ( false ) ;
257- } , 30000 ) ;
255+ console . log ( '🔄 Controllo automatico iniziale degli aggiornamenti...' ) ;
256+ this . checkForUpdates ( false ) ; // silent - mostra il banner se c'è un aggiornamento
257+ } , 5000 ) ;
258258
259259 console . log ( '🔄 Controllo automatico aggiornamenti avviato' ) ;
260260 }
@@ -292,6 +292,83 @@ window.UpdateManagerV2 = class UpdateManagerV2 {
292292 return 0 ;
293293 }
294294
295+ /**
296+ * Controlla solo la versione da GitHub senza tentare l'installazione (per modalità sviluppo)
297+ */
298+ async checkVersionFromGitHub ( showDialog = true ) {
299+ try {
300+ // Ottieni versione corrente
301+ let currentVersion ;
302+ try {
303+ currentVersion = await this . getAppVersion ( ) ;
304+ console . log ( `📋 Versione corrente: ${ currentVersion } ` ) ;
305+ } catch ( error ) {
306+ console . error ( '❌ Errore nel recupero della versione corrente:' , error ) ;
307+ this . emit ( 'checkError' , { error : 'Impossibile determinare la versione corrente' } ) ;
308+ if ( showDialog ) {
309+ alert ( 'Impossibile verificare gli aggiornamenti: versione corrente non determinabile' ) ;
310+ }
311+ return false ;
312+ }
313+
314+ // Controlla ultima release su GitHub
315+ const response = await fetch ( 'https://api.github.com/repos/murdercode/presto/releases/latest' ) ;
316+ if ( ! response . ok ) {
317+ throw new Error ( `HTTP ${ response . status } ` ) ;
318+ }
319+
320+ const githubRelease = await response . json ( ) ;
321+ const latestVersion = githubRelease . tag_name . replace ( / ^ v / , '' ) ;
322+
323+ console . log ( `📋 Ultima versione GitHub: ${ latestVersion } ` ) ;
324+
325+ // Confronta versioni
326+ if ( this . compareVersions ( latestVersion , currentVersion ) <= 0 ) {
327+ console . log ( '✅ Nessun aggiornamento disponibile' ) ;
328+ this . updateAvailable = false ;
329+ this . currentUpdate = null ;
330+ this . emit ( 'updateNotAvailable' ) ;
331+
332+ if ( showDialog ) {
333+ alert ( `Nessun aggiornamento disponibile.\n\nVersione corrente: ${ currentVersion } \nUltima versione: ${ latestVersion } ` ) ;
334+ }
335+ return false ;
336+ }
337+
338+ // Aggiornamento disponibile
339+ console . log ( `🎉 Aggiornamento disponibile: ${ latestVersion } ` ) ;
340+ this . updateAvailable = true ;
341+ this . currentUpdate = {
342+ version : latestVersion ,
343+ body : githubRelease . body || '' ,
344+ date : githubRelease . published_at
345+ } ;
346+
347+ // console.log('📢 Emetto evento updateAvailable con:', this.currentUpdate); // Debug rimosso
348+ this . emit ( 'updateAvailable' , this . currentUpdate ) ;
349+
350+ if ( showDialog ) {
351+ const message = `🎉 Aggiornamento disponibile!\n\n` +
352+ `Versione corrente: ${ currentVersion } \n` +
353+ `Nuova versione: ${ latestVersion } \n\n` +
354+ `Nota: In modalità sviluppo, scarica manualmente da GitHub.` ;
355+ alert ( message ) ;
356+ }
357+
358+ return true ;
359+
360+ } catch ( error ) {
361+ console . error ( '❌ Errore controllo versione GitHub:' , error ) ;
362+ this . emit ( 'checkError' , { error : `Errore di rete: ${ error . message } ` } ) ;
363+ if ( showDialog ) {
364+ alert ( `Errore nel controllo degli aggiornamenti:\n${ error . message } ` ) ;
365+ }
366+ return false ;
367+ } finally {
368+ this . isChecking = false ;
369+ }
370+ }
371+
295372 /**
296373 * Controlla se sono disponibili aggiornamenti usando approccio ibrido sicuro
297374 */
@@ -312,12 +389,9 @@ window.UpdateManagerV2 = class UpdateManagerV2 {
312389 const hasTestMode = localStorage . getItem ( 'presto_force_update_test' ) === 'true' ;
313390
314391 if ( isDevMode && ! hasTestMode ) {
315- console . warn ( '⚠️ Modalità sviluppo - controllo disabilitato' ) ;
316- this . emit ( 'updateNotAvailable' ) ;
317- if ( showDialog ) {
318- await this . showDevelopmentMessage ( ) ;
319- }
320- return false ;
392+ console . log ( '🔍 Modalità sviluppo - controllo tramite GitHub API senza installazione' ) ;
393+ // In modalità sviluppo facciamo solo il controllo della versione senza installazione
394+ return await this . checkVersionFromGitHub ( showDialog ) ;
321395 }
322396
323397 // Se è modalità test, simula un aggiornamento
@@ -329,8 +403,21 @@ window.UpdateManagerV2 = class UpdateManagerV2 {
329403
330404 // Controlla aggiornamenti reali
331405 // 1. Prima prova con l'API GitHub per avere info complete
332- const currentVersion = await this . getAppVersion ( ) ;
333- console . log ( `📋 Versione corrente: ${ currentVersion } ` ) ;
406+ let currentVersion ;
407+ try {
408+ currentVersion = await this . getAppVersion ( ) ;
409+ console . log ( `📋 Versione corrente: ${ currentVersion } ` ) ;
410+ } catch ( versionError ) {
411+ console . error ( '❌ Impossibile ottenere la versione corrente:' , versionError . message ) ;
412+ this . updateAvailable = false ;
413+ this . currentUpdate = null ;
414+ if ( ! silent ) {
415+ this . eventTarget . dispatchEvent ( new CustomEvent ( 'checkError' , {
416+ detail : { message : 'Impossibile verificare la versione corrente dell\'applicazione' }
417+ } ) ) ;
418+ }
419+ return false ;
420+ }
334421
335422 // Controlla GitHub API
336423 const response = await fetch ( 'https://api.github.com/repos/StefanoNovelli/presto/releases/latest' ) ;
@@ -623,6 +710,7 @@ window.UpdateManagerV2 = class UpdateManagerV2 {
623710 }
624711
625712 emit ( event , data = null ) {
713+ // console.log(`📢 [UpdateManager] Emetto evento: ${event}`, data); // Debug rimosso
626714 this . eventTarget . dispatchEvent ( new CustomEvent ( event , { detail : data } ) ) ;
627715 }
628716
0 commit comments