From 413749d9998a9b65414387f243383cfc1b8c386e Mon Sep 17 00:00:00 2001 From: rever-tecnologia Date: Wed, 17 Dec 2025 17:47:47 -0300 Subject: [PATCH] =?UTF-8?q?fix(desktop):=20corrige=20detec=C3=A7=C3=A3o=20?= =?UTF-8?q?de=20desativa=C3=A7=C3=A3o=20em=20tempo=20real?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Renderiza MachineStateMonitor mesmo durante tela de loading - Adiciona verificação de isMachineActive na condição de early return - Detecta estado de desativação/reset já na carga inicial - Adiciona logs para facilitar debugging 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../src/components/MachineStateMonitor.tsx | 20 ++++++++++++++++++- apps/desktop/src/main.tsx | 12 ++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/apps/desktop/src/components/MachineStateMonitor.tsx b/apps/desktop/src/components/MachineStateMonitor.tsx index 0ed9e96..c3f220a 100644 --- a/apps/desktop/src/components/MachineStateMonitor.tsx +++ b/apps/desktop/src/components/MachineStateMonitor.tsx @@ -33,8 +33,26 @@ function MachineStateMonitorInner({ machineId, onDeactivated, onTokenRevoked }: useEffect(() => { if (!machineState) return - // Na primeira carga, apenas armazena os valores iniciais + // Na primeira carga, verifica estado inicial E armazena valores if (!initialLoadDone.current) { + console.log("[MachineStateMonitor] Carga inicial", { + isActive: machineState.isActive, + hasValidToken: machineState.hasValidToken, + found: machineState.found, + }) + + // Se já estiver desativado na carga inicial, chama callback + if (machineState.isActive === false) { + console.log("[MachineStateMonitor] Máquina já estava desativada") + onDeactivated?.() + } + + // Se token já estiver inválido na carga inicial, chama callback + if (machineState.hasValidToken === false) { + console.log("[MachineStateMonitor] Token já estava revogado") + onTokenRevoked?.() + } + previousIsActive.current = machineState.isActive previousHasValidToken.current = machineState.hasValidToken initialLoadDone.current = true diff --git a/apps/desktop/src/main.tsx b/apps/desktop/src/main.tsx index 2d0448c..7979f0e 100644 --- a/apps/desktop/src/main.tsx +++ b/apps/desktop/src/main.tsx @@ -1560,9 +1560,19 @@ const resolvedAppUrl = useMemo(() => { // Quando há token persistido (dispositivo já provisionado) e ainda não // disparamos o auto-launch, exibimos diretamente a tela de loading da // plataforma para evitar piscar o card de resumo/inventário. - if ((token && !autoLaunchRef.current) || (isLaunchingSystem && token)) { + // IMPORTANTE: Sempre renderiza o MachineStateMonitor para detectar desativação em tempo real + if (((token && !autoLaunchRef.current) || (isLaunchingSystem && token)) && isMachineActive) { return (
+ {/* Monitor de estado da máquina - deve rodar mesmo durante loading */} + {token && config?.machineId && convexClient && ( + + )}

Abrindo plataforma da Rever…