fix(desktop): corrige tela de desativacao e adiciona botao Verificar novamente
All checks were successful
All checks were successful
- Corrige erro gramatical: "Dispositivo desativada" -> "Dispositivo desativado" - Adiciona botao "Verificar novamente" na tela de desativacao - Adiciona callback onReactivated no MachineStateMonitor - Corrige fundo escuro para cobrir toda a tela quando desativado - Corrige acentuacoes faltantes no historico de automacoes 🤖 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
70cba99424
commit
a5bab2cc33
4 changed files with 119 additions and 46 deletions
|
|
@ -12,6 +12,8 @@ import { cn } from "./lib/utils"
|
|||
import { ChatApp } from "./chat"
|
||||
import { DeactivationScreen } from "./components/DeactivationScreen"
|
||||
import { MachineStateMonitor } from "./components/MachineStateMonitor"
|
||||
import { api } from "./convex/_generated/api"
|
||||
import type { Id } from "./convex/_generated/dataModel"
|
||||
import type { SessionStartedEvent, UnreadUpdateEvent, NewMessageEvent, SessionEndedEvent } from "./chat/types"
|
||||
|
||||
// URL do Convex para subscription em tempo real
|
||||
|
|
@ -724,12 +726,36 @@ useEffect(() => {
|
|||
}
|
||||
}, [token]) // eslint-disable-line react-hooks/exhaustive-deps
|
||||
|
||||
// Callbacks para quando a máquina for desativada ou resetada
|
||||
// Callbacks para quando a máquina for desativada, resetada ou reativada
|
||||
const handleMachineDeactivated = useCallback(() => {
|
||||
console.log("[App] Máquina foi desativada - mostrando tela de bloqueio")
|
||||
setIsMachineActive(false)
|
||||
}, [])
|
||||
|
||||
const handleMachineReactivated = useCallback(() => {
|
||||
console.log("[App] Máquina foi reativada - liberando acesso")
|
||||
setIsMachineActive(true)
|
||||
}, [])
|
||||
|
||||
// Callback para o botão "Verificar novamente" na tela de desativação
|
||||
// Usa o convexClient diretamente para fazer uma query manual
|
||||
const handleRetryCheck = useCallback(async () => {
|
||||
if (!convexClient || !config?.machineId) return
|
||||
console.log("[App] Verificando estado da máquina manualmente...")
|
||||
try {
|
||||
const state = await convexClient.query(api.machines.getMachineState, {
|
||||
machineId: config.machineId as Id<"machines">,
|
||||
})
|
||||
console.log("[App] Estado da máquina:", state)
|
||||
if (state?.isActive) {
|
||||
console.log("[App] Máquina ativa - liberando acesso")
|
||||
setIsMachineActive(true)
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("[App] Erro ao verificar estado:", err)
|
||||
}
|
||||
}, [convexClient, config?.machineId])
|
||||
|
||||
const handleTokenRevoked = useCallback(async () => {
|
||||
console.log("[App] Token foi revogado - voltando para tela de registro")
|
||||
if (store) {
|
||||
|
|
@ -1582,20 +1608,31 @@ const resolvedAppUrl = useMemo(() => {
|
|||
)
|
||||
}
|
||||
|
||||
// Monitor sempre ativo quando há token e machineId
|
||||
const machineMonitor = token && config?.machineId && convexClient ? (
|
||||
<MachineStateMonitor
|
||||
client={convexClient}
|
||||
machineId={config.machineId}
|
||||
onDeactivated={handleMachineDeactivated}
|
||||
onTokenRevoked={handleTokenRevoked}
|
||||
onReactivated={handleMachineReactivated}
|
||||
/>
|
||||
) : null
|
||||
|
||||
// Tela de desativação (renderizada separadamente para evitar container com fundo claro)
|
||||
if (token && !isMachineActive) {
|
||||
return (
|
||||
<>
|
||||
{machineMonitor}
|
||||
<DeactivationScreen companyName={companyName} onRetry={handleRetryCheck} />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="min-h-screen grid place-items-center bg-slate-50 p-6">
|
||||
{/* Monitor de estado da maquina em tempo real via Convex */}
|
||||
{token && config?.machineId && convexClient && (
|
||||
<MachineStateMonitor
|
||||
client={convexClient}
|
||||
machineId={config.machineId}
|
||||
onDeactivated={handleMachineDeactivated}
|
||||
onTokenRevoked={handleTokenRevoked}
|
||||
/>
|
||||
)}
|
||||
{token && !isMachineActive ? (
|
||||
<DeactivationScreen companyName={companyName} />
|
||||
) : (
|
||||
{machineMonitor}
|
||||
<div className="w-full max-w-[720px] rounded-2xl border border-slate-200 bg-white p-6 shadow-sm">
|
||||
<div className="mb-6 flex flex-col items-center gap-4 text-center">
|
||||
<img
|
||||
|
|
@ -1816,8 +1853,6 @@ const resolvedAppUrl = useMemo(() => {
|
|||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue