feat(client): pausar/continuar envio com auto-retomada após 10 min
- Checkbox "Pausar Envio de Imagens" na bandeja (tray) - Auto-retomada automática após 10 min de pausa (caso usuário esqueça) - client-monitor: comandos IPC pause/resume; processQueue e executarSincronizacaoLocal respeitam a pausa, mantendo imagens na fila sem perdê-las - Estado de pausa reaplicado se o monitor reiniciar - "Forçar Sincronização" retoma o envio automaticamente se estiver pausado - Bump 1.2.7 → 1.2.8 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,54 @@ let currentStatus = { connected: false, identified: false };
|
||||
let downloadProgress = null; // Variável para controlar o progresso de download
|
||||
const recentLogs = [];
|
||||
|
||||
// ================================================================
|
||||
// CONTROLE DE PAUSA DE ENVIO
|
||||
// ================================================================
|
||||
let isSendingPaused = false; // true = envio de imagens pausado
|
||||
let autoResumeTimer = null; // timer que retoma o envio sozinho
|
||||
const AUTO_RESUME_MS = 10 * 60 * 1000; // 10 minutos
|
||||
|
||||
function pauseSending() {
|
||||
isSendingPaused = true;
|
||||
if (monitorProcess) monitorProcess.send({ command: 'pause' });
|
||||
|
||||
// Agenda retomada automática após 10 min, caso o usuário esqueça de continuar
|
||||
if (autoResumeTimer) clearTimeout(autoResumeTimer);
|
||||
autoResumeTimer = setTimeout(() => {
|
||||
addLog('▶️ Auto-retomada: 10 minutos se passaram, retomando envio automaticamente.');
|
||||
resumeSending(true);
|
||||
}, AUTO_RESUME_MS);
|
||||
|
||||
if (tray) {
|
||||
tray.displayBalloon({
|
||||
title: 'ScoreOdonto - Envio Pausado',
|
||||
content: 'O envio de imagens foi pausado. Ele será retomado automaticamente em 10 minutos se você não continuar antes.',
|
||||
iconType: 'warning'
|
||||
});
|
||||
}
|
||||
updateTrayMenu();
|
||||
}
|
||||
|
||||
function resumeSending(isAuto = false) {
|
||||
isSendingPaused = false;
|
||||
if (autoResumeTimer) { clearTimeout(autoResumeTimer); autoResumeTimer = null; }
|
||||
if (monitorProcess) monitorProcess.send({ command: 'resume' });
|
||||
|
||||
if (tray && !isAuto) {
|
||||
tray.displayBalloon({
|
||||
title: 'ScoreOdonto - Envio Retomado',
|
||||
content: 'O envio de imagens foi retomado.',
|
||||
iconType: 'info'
|
||||
});
|
||||
}
|
||||
updateTrayMenu();
|
||||
}
|
||||
|
||||
function toggleSending() {
|
||||
if (isSendingPaused) resumeSending(false);
|
||||
else pauseSending();
|
||||
}
|
||||
|
||||
// ================================================================
|
||||
// AUTO-UPDATER CONFIG
|
||||
// ================================================================
|
||||
@@ -255,15 +303,29 @@ function updateTrayMenu(countdown = null, countdownInterval = null, updateVersio
|
||||
}
|
||||
|
||||
template.push(
|
||||
{
|
||||
label: 'Forçar Sincronização 🔄',
|
||||
{
|
||||
label: isSendingPaused ? '⏸️ Envio PAUSADO (retoma em ~10 min)' : '▶️ Envio Ativo',
|
||||
enabled: false
|
||||
},
|
||||
{
|
||||
label: 'Pausar Envio de Imagens',
|
||||
type: 'checkbox',
|
||||
checked: isSendingPaused,
|
||||
click: () => toggleSending()
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: 'Forçar Sincronização 🔄',
|
||||
click: () => {
|
||||
if (isSendingPaused) {
|
||||
resumeSending(false);
|
||||
}
|
||||
if (monitorProcess) {
|
||||
monitorProcess.send({ command: 'sync' });
|
||||
} else {
|
||||
startMonitorProcess();
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'Verificar Atualizações 🔄',
|
||||
|
||||
Reference in New Issue
Block a user