feat: adiciona acompanhamento de % de download na bandeja
This commit is contained in:
@@ -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
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user