fix(desktop): corrige detecção de desativação em tempo real
All checks were successful
All checks were successful
- 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 <noreply@anthropic.com>
This commit is contained in:
parent
0bfe4edc6c
commit
413749d999
2 changed files with 30 additions and 2 deletions
|
|
@ -33,8 +33,26 @@ function MachineStateMonitorInner({ machineId, onDeactivated, onTokenRevoked }:
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!machineState) return
|
if (!machineState) return
|
||||||
|
|
||||||
// Na primeira carga, apenas armazena os valores iniciais
|
// Na primeira carga, verifica estado inicial E armazena valores
|
||||||
if (!initialLoadDone.current) {
|
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
|
previousIsActive.current = machineState.isActive
|
||||||
previousHasValidToken.current = machineState.hasValidToken
|
previousHasValidToken.current = machineState.hasValidToken
|
||||||
initialLoadDone.current = true
|
initialLoadDone.current = true
|
||||||
|
|
|
||||||
|
|
@ -1560,9 +1560,19 @@ const resolvedAppUrl = useMemo(() => {
|
||||||
// Quando há token persistido (dispositivo já provisionado) e ainda não
|
// Quando há token persistido (dispositivo já provisionado) e ainda não
|
||||||
// disparamos o auto-launch, exibimos diretamente a tela de loading da
|
// disparamos o auto-launch, exibimos diretamente a tela de loading da
|
||||||
// plataforma para evitar piscar o card de resumo/inventário.
|
// 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 (
|
return (
|
||||||
<div className="min-h-screen grid place-items-center bg-slate-50 p-6">
|
<div className="min-h-screen grid place-items-center bg-slate-50 p-6">
|
||||||
|
{/* Monitor de estado da máquina - deve rodar mesmo durante loading */}
|
||||||
|
{token && config?.machineId && convexClient && (
|
||||||
|
<MachineStateMonitor
|
||||||
|
client={convexClient}
|
||||||
|
machineId={config.machineId}
|
||||||
|
onDeactivated={handleMachineDeactivated}
|
||||||
|
onTokenRevoked={handleTokenRevoked}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
<div className="flex flex-col items-center gap-3 rounded-2xl border border-slate-200 bg-white px-8 py-10 shadow-sm">
|
<div className="flex flex-col items-center gap-3 rounded-2xl border border-slate-200 bg-white px-8 py-10 shadow-sm">
|
||||||
<Loader2 className="size-6 animate-spin text-neutral-700" />
|
<Loader2 className="size-6 animate-spin text-neutral-700" />
|
||||||
<p className="text-sm font-medium text-neutral-800">Abrindo plataforma da Rever…</p>
|
<p className="text-sm font-medium text-neutral-800">Abrindo plataforma da Rever…</p>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue