feat: adiciona acompanhamento de % de download na bandeja

This commit is contained in:
VPS 4 Builder
2026-05-28 03:31:10 +02:00
parent b638296b32
commit 347b96b1b0
2 changed files with 40 additions and 11 deletions
+39 -10
View File
@@ -4,6 +4,12 @@ const fs = require('fs');
const { fork } = require('child_process'); const { fork } = require('child_process');
const { autoUpdater } = require('electron-updater'); const { autoUpdater } = require('electron-updater');
let tray = null;
let configWindow = null;
let monitorProcess = null;
let currentStatus = { connected: false, identified: false };
let downloadProgress = null; // Variável para controlar o progresso de download
// ================================================================ // ================================================================
// AUTO-UPDATER CONFIG // AUTO-UPDATER CONFIG
// ================================================================ // ================================================================
@@ -17,10 +23,12 @@ autoUpdater.on('checking-for-update', () => {
autoUpdater.on('update-available', (info) => { autoUpdater.on('update-available', (info) => {
console.log('🔄 Nova versão disponível:', info.version); console.log('🔄 Nova versão disponível:', info.version);
downloadProgress = 0; // Inicializa o progresso
updateTrayMenu(); // Atualiza o menu para mostrar a aba "Baixando..."
if (tray) { if (tray) {
tray.displayBalloon({ tray.displayBalloon({
title: 'Nova Atualização Encontrada', title: 'Nova Atualização Encontrada',
content: `A versão ${info.version} está sendo baixada silenciosamente em segundo plano...`, content: `A versão ${info.version} está sendo baixada. Clique com botão direito no ícone para acompanhar o progresso!`,
iconType: 'info' iconType: 'info'
}); });
} }
@@ -31,11 +39,21 @@ autoUpdater.on('update-not-available', () => {
}); });
autoUpdater.on('download-progress', (progress) => { autoUpdater.on('download-progress', (progress) => {
console.log(`⬇️ Baixando atualização: ${Math.round(progress.percent)}%`); const p = Math.round(progress.percent);
console.log(`⬇️ Baixando atualização: ${p}%`);
if (downloadProgress !== p) {
downloadProgress = p;
// Atualiza a bandeja com throttling para não piscar demais
if (p % 5 === 0 || p === 100) {
updateTrayMenu();
}
}
}); });
autoUpdater.on('update-downloaded', (info) => { autoUpdater.on('update-downloaded', (info) => {
console.log('✅ Atualização baixada:', info.version, '— será instalada ao fechar o app.'); console.log('✅ Atualização baixada:', info.version, '— será instalada ao fechar o app.');
downloadProgress = "Pronto";
updateTrayMenu();
// Notificar o usuário na tray // Notificar o usuário na tray
if (tray) { if (tray) {
tray.displayBalloon({ tray.displayBalloon({
@@ -48,13 +66,10 @@ autoUpdater.on('update-downloaded', (info) => {
autoUpdater.on('error', (err) => { autoUpdater.on('error', (err) => {
console.error('❌ Erro no auto-updater:', err.message); console.error('❌ Erro no auto-updater:', err.message);
downloadProgress = null;
updateTrayMenu();
}); });
let tray = null;
let configWindow = null;
let monitorProcess = null;
let currentStatus = { connected: false, identified: false };
const appDataFolder = app.getPath('userData'); const appDataFolder = app.getPath('userData');
const configPath = path.join(appDataFolder, 'config.json'); const configPath = path.join(appDataFolder, 'config.json');
@@ -183,9 +198,22 @@ function updateTrayMenu() {
: "ScoreOdonto: Conectado... 🟡"; : "ScoreOdonto: Conectado... 🟡";
} }
const contextMenu = Menu.buildFromTemplate([ const template = [
{ label: statusText, enabled: false }, { label: statusText, enabled: false },
{ type: 'separator' }, { type: 'separator' }
];
// Se houver um download em andamento, mostra a barra no menu
if (downloadProgress !== null) {
if (downloadProgress === "Pronto") {
template.push({ label: '📦 Atualização pronta para instalar (reinicie o app)', enabled: false });
} else {
template.push({ label: `⬇️ Baixando atualização: ${downloadProgress}%`, enabled: false });
}
template.push({ type: 'separator' });
}
template.push(
{ {
label: 'Forçar Sincronização 🔄', label: 'Forçar Sincronização 🔄',
click: () => { click: () => {
@@ -227,8 +255,9 @@ function updateTrayMenu() {
app.quit(); app.quit();
} }
} }
]); );
const contextMenu = Menu.buildFromTemplate(template);
tray.setContextMenu(contextMenu); tray.setContextMenu(contextMenu);
tray.setToolTip(`ScoreOdonto Dental Client\n${statusText}`); tray.setToolTip(`ScoreOdonto Dental Client\n${statusText}`);
} }
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "rx.scoreodonto.com-client", "name": "rx.scoreodonto.com-client",
"version": "1.2.2", "version": "1.2.3",
"author": "ScoreOdonto", "author": "ScoreOdonto",
"description": "Cliente Windows para envio de imagens dentais da ScoreOdonto", "description": "Cliente Windows para envio de imagens dentais da ScoreOdonto",
"main": "index.js", "main": "index.js",