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 { 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
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user