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 { 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
// ================================================================
@@ -17,10 +23,12 @@ autoUpdater.on('checking-for-update', () => {
autoUpdater.on('update-available', (info) => {
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) {
tray.displayBalloon({
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'
});
}
@@ -31,11 +39,21 @@ autoUpdater.on('update-not-available', () => {
});
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) => {
console.log('✅ Atualização baixada:', info.version, '— será instalada ao fechar o app.');
downloadProgress = "Pronto";
updateTrayMenu();
// Notificar o usuário na tray
if (tray) {
tray.displayBalloon({
@@ -48,13 +66,10 @@ autoUpdater.on('update-downloaded', (info) => {
autoUpdater.on('error', (err) => {
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 configPath = path.join(appDataFolder, 'config.json');
@@ -183,9 +198,22 @@ function updateTrayMenu() {
: "ScoreOdonto: Conectado... 🟡";
}
const contextMenu = Menu.buildFromTemplate([
const template = [
{ 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 🔄',
click: () => {
@@ -227,8 +255,9 @@ function updateTrayMenu() {
app.quit();
}
}
]);
);
const contextMenu = Menu.buildFromTemplate(template);
tray.setContextMenu(contextMenu);
tray.setToolTip(`ScoreOdonto Dental Client\n${statusText}`);
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "rx.scoreodonto.com-client",
"version": "1.2.2",
"version": "1.2.3",
"author": "ScoreOdonto",
"description": "Cliente Windows para envio de imagens dentais da ScoreOdonto",
"main": "index.js",