@@ -482,12 +482,49 @@ navEdit.addEventListener('click', () => {
482482navRemove . addEventListener ( 'click' , handleRemove ) ;
483483
484484// Listener para eventos de atualização de status emitidos pelo backend Go (Wails v3)
485- if ( window . wails && window . wails . Events ) {
486- window . wails . Events . On ( 'ips-updated' , ( updatedData ) => {
487- renderHosts ( updatedData ) ;
488- } ) ;
485+ function handleIpsUpdatedEvent ( eventOrData ) {
486+ console . log ( '[IP Monitor] Evento ips-updated recebido do backend:' , eventOrData ) ;
487+ const data = ( eventOrData && eventOrData . data !== undefined ) ? eventOrData . data : eventOrData ;
488+ if ( data ) {
489+ renderHosts ( data ) ;
490+ }
489491}
490492
493+ // Registra listener no Wails Events com retry caso o runtime carregue de forma assíncrona
494+ function setupWailsEventListeners ( ) {
495+ if ( window . wails && window . wails . Events && typeof window . wails . Events . On === 'function' ) {
496+ window . wails . Events . On ( 'ips-updated' , handleIpsUpdatedEvent ) ;
497+ console . log ( '[IP Monitor] Listener Wails v3 para "ips-updated" registrado com sucesso.' ) ;
498+ } else {
499+ // Tenta novamente caso o script do runtime demore alguns milissegundos
500+ setTimeout ( ( ) => {
501+ if ( window . wails && window . wails . Events && typeof window . wails . Events . On === 'function' ) {
502+ window . wails . Events . On ( 'ips-updated' , handleIpsUpdatedEvent ) ;
503+ console . log ( '[IP Monitor] Listener Wails v3 para "ips-updated" registrado após retry.' ) ;
504+ } else {
505+ console . warn ( '[IP Monitor] Wails runtime não detectado para eventos nativos; operando com fallback.' ) ;
506+ }
507+ } , 500 ) ;
508+ }
509+ }
510+
511+ // Fallback de polling a cada 60 segundos (garante que a UI sempre atualize mesmo se eventos IPC falharem)
512+ function startPeriodicFallbackSync ( ) {
513+ setInterval ( async ( ) => {
514+ try {
515+ const overview = await callGo ( 'list' ) ;
516+ if ( overview ) {
517+ renderHosts ( overview ) ;
518+ }
519+ } catch ( e ) {
520+ console . warn ( '[IP Monitor] Fallback periódico de sincronização falhou:' , e ) ;
521+ }
522+ } , 60000 ) ;
523+ }
524+
525+ setupWailsEventListeners ( ) ;
526+ startPeriodicFallbackSync ( ) ;
527+
491528// Carrega a versão dinâmica exposta pelo backend Go
492529async function loadVersion ( ) {
493530 const badge = document . getElementById ( 'appVersionBadge' ) ;
0 commit comments