diff --git a/client-monitor.js b/client-monitor.js index f31fae9..da29a4f 100644 --- a/client-monitor.js +++ b/client-monitor.js @@ -1098,6 +1098,49 @@ function connectToServer() { } }); + // Plan B: servidor solicita reenvio de arquivos ausentes no Wasabi + socket.on('reupload-files', async (data) => { + const files = Array.isArray(data.files) ? data.files : []; + if (files.length === 0) return; + + addLog(`📥 [Plan B] Servidor solicitou reenvio de ${files.length} arquivo(s) ausente(s) no Wasabi.`); + + // Notifica o processo Electron para exibir balão informativo + if (process.send) { + process.send({ event: 'reupload-requested', count: files.length }); + } + + let reuploadado = 0; + let naoEncontrado = 0; + + for (const filename of files) { + if (isSendingPaused) { + addLog(`⏸️ [Plan B] Envio pausado — interrompendo reenvio. ${reuploadado} já reenviados.`); + break; + } + + const filePath = path.join(config.monitorPath, filename); + + if (!fs.existsSync(filePath)) { + addLog(`⚠️ [Plan B] Arquivo não encontrado localmente: ${filename}`); + naoEncontrado++; + continue; + } + + try { + addLog(`♻️ [Plan B] Reenviando: ${filename}`); + // Remove do cache para forçar reenvio mesmo que já conste como enviado + uploadedCache.delete(filename); + await sendImageToServer(filePath, false, true); // bypassCache = true + reuploadado++; + } catch (e) { + addLog(`❌ [Plan B] Falha ao reenviar ${filename}: ${e.message}`); + } + } + + addLog(`✅ [Plan B] Reenvio concluído: ${reuploadado} reenviado(s), ${naoEncontrado} não encontrado(s) localmente.`); + }); + socket.on('test-connection', (data) => { addLog(`🧪 Recebido teste de conexão do servidor. Test ID: ${data?.testId}`); const startTime = data?.timestamp || Date.now(); diff --git a/index.js b/index.js index 449eb73..16220df 100644 --- a/index.js +++ b/index.js @@ -349,6 +349,14 @@ function startMonitorProcess() { iconType: 'error' }); } + } else if (message && message.event === 'reupload-requested') { + if (tray) { + tray.displayBalloon({ + title: 'ScoreOdonto — Reenvio em Andamento', + content: `O servidor solicitou o reenvio de ${message.count} imagem(ns) ausente(s) no armazenamento. Reenviando automaticamente...`, + iconType: 'info' + }); + } } });