diff --git a/src/components/admin/machines/admin-machine-details.client.tsx b/src/components/admin/machines/admin-machine-details.client.tsx index 894d8b5..ddef2ff 100644 --- a/src/components/admin/machines/admin-machine-details.client.tsx +++ b/src/components/admin/machines/admin-machine-details.client.tsx @@ -24,11 +24,11 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { const single = useQuery(api.machines.getById, queryArgs) // Fallback via HTTP in caso de o Convex React demorar/ficar preso em loading - const [fallback, setFallback] = useState | null>(null) + const [fallback, setFallback] = useState | null | undefined>(undefined) const [loadError, setLoadError] = useState(null) const [retryTick, setRetryTick] = useState(0) const timer = useRef | null>(null) - const shouldLoad = single === undefined && !fallback && Boolean(machineId) + const shouldLoad = (single === undefined || single === null) && fallback === undefined && Boolean(machineId) useEffect(() => { if (!shouldLoad) return @@ -58,7 +58,7 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { const res = await fetch(`/api/admin/machines/${machineId}/details`, { credentials: "include" }) if (res.ok) { const data = (await res.json()) as Record - setFallback(data) + setFallback(data ?? null) setLoadError(null) } else { let message = `Falha ao carregar (HTTP ${res.status})` @@ -70,7 +70,11 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { } catch { // ignore } - setLoadError(message) + if (res.status == 404) { + setFallback(null) + } else { + setLoadError(message) + } } } catch { setLoadError("Erro de rede ao carregar os dados da máquina.") @@ -96,12 +100,12 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { }, [shouldLoad, machineId, retryTick]) const machine: MachinesQueryItem | null = useMemo(() => { - const source = single ?? fallback + const source = single ?? (fallback === undefined ? undefined : fallback) if (source === undefined || source === null) return source as null return normalizeMachineItem(source) }, [single, fallback]) - const isLoading = single === undefined && !fallback && !loadError - const isNotFound = single === null && !fallback + const isLoading = single === undefined && fallback === undefined && !loadError + const isNotFound = (single === null || fallback === null) && !loadError const onRetry = () => { setLoadError(null) @@ -114,6 +118,46 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { // ignore } } + if (loadError && !machine) { + return ( + + +

Falha ao carregar os dados da máquina

+

{loadError}

+
+ +
+
+
+ ) + } + + if (isLoading) { + return ( + + + + + + + + ) + } + + if (isNotFound) { + return ( + + +

Máquina não encontrada

+

Verifique o identificador e tente novamente.

+
+ +
+
+
+ ) + } + return }