fix(admin/machines): replace leftover companyFilter with companyQuery; remove remaining any casts; add readBool helper; clean imports

This commit is contained in:
Esdras Renan 2025-10-10 10:34:19 -03:00
parent b5fbf69cc1
commit f89424c168

View file

@ -8,7 +8,6 @@ import { toast } from "sonner"
import { ClipboardCopy, ServerCog, Cpu, MemoryStick, Monitor, HardDrive, Pencil } from "lucide-react" import { ClipboardCopy, ServerCog, Cpu, MemoryStick, Monitor, HardDrive, Pencil } from "lucide-react"
import { api } from "@/convex/_generated/api" import { api } from "@/convex/_generated/api"
import type { Id } from "@/convex/_generated/dataModel"
import { Badge } from "@/components/ui/badge" import { Badge } from "@/components/ui/badge"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input" import { Input } from "@/components/ui/input"
@ -198,6 +197,12 @@ function fmtBool(value: unknown) {
return "—" return "—"
} }
function readBool(source: unknown, key: string): boolean | undefined {
if (!source || typeof source !== "object") return undefined
const value = (source as Record<string, unknown>)[key]
return typeof value === "boolean" ? value : undefined
}
function getStatusVariant(status?: string | null) { function getStatusVariant(status?: string | null) {
if (!status) return { label: statusLabels.unknown, className: statusClasses.unknown } if (!status) return { label: statusLabels.unknown, className: statusClasses.unknown }
const normalized = status.toLowerCase() const normalized = status.toLowerCase()
@ -251,7 +256,7 @@ export function AdminMachinesOverview({ tenantId }: { tenantId: string }) {
.toLowerCase() .toLowerCase()
return hay.includes(text) return hay.includes(text)
}) })
}, [machines, q, statusFilter, osFilter, companyFilter, onlyAlerts]) }, [machines, q, statusFilter, osFilter, companyQuery, onlyAlerts])
return ( return (
<div className="grid gap-6"> <div className="grid gap-6">
@ -795,7 +800,7 @@ export function MachineDetails({ machine }: MachineDetailsProps) {
<Cpu className="size-5 text-slate-500" /> <Cpu className="size-5 text-slate-500" />
<div className="min-w-0"> <div className="min-w-0">
<p className="text-xs text-muted-foreground">CPU</p> <p className="text-xs text-muted-foreground">CPU</p>
<p className="break-words text-sm font-semibold text-foreground">{String((winCpu as any)?.Name ?? "—")}</p> <p className="break-words text-sm font-semibold text-foreground">{winCpu?.Name ?? "—"}</p>
</div> </div>
</CardContent> </CardContent>
</Card> </Card>
@ -813,7 +818,7 @@ export function MachineDetails({ machine }: MachineDetailsProps) {
<Monitor className="size-5 text-slate-500" /> <Monitor className="size-5 text-slate-500" />
<div className="min-w-0"> <div className="min-w-0">
<p className="truncate text-xs text-muted-foreground">GPU</p> <p className="truncate text-xs text-muted-foreground">GPU</p>
<p className="truncate text-sm font-semibold text-foreground">{String((winGpu as any)?.Name ?? "—")}</p> <p className="truncate text-sm font-semibold text-foreground">{winGpu?.Name ?? "—"}</p>
</div> </div>
</CardContent> </CardContent>
</Card> </Card>
@ -940,13 +945,19 @@ export function MachineDetails({ machine }: MachineDetailsProps) {
<div className="rounded-md border border-slate-200 bg-slate-50/60 p-3"> <div className="rounded-md border border-slate-200 bg-slate-50/60 p-3">
<p className="text-xs font-semibold uppercase text-slate-500">Adaptadores de vídeo</p> <p className="text-xs font-semibold uppercase text-slate-500">Adaptadores de vídeo</p>
<ul className="mt-2 grid gap-1 text-xs text-muted-foreground"> <ul className="mt-2 grid gap-1 text-xs text-muted-foreground">
{(windowsExt.videoControllers as Array<any>).map((v, idx) => ( {(windowsExt.videoControllers as Array<unknown>).map((vRaw, idx) => {
<li key={`vid-${idx}`}> const v = (vRaw && typeof vRaw === "object") ? (vRaw as Record<string, unknown>) : undefined
<span className="font-medium text-foreground">{v?.Name ?? "—"}</span> const name = typeof v?.["Name"] === "string" ? (v["Name"] as string) : "—"
{v?.AdapterRAM ? <span className="ml-1">{formatBytes(Number(v.AdapterRAM))}</span> : null} const ram = typeof v?.["AdapterRAM"] === "number" ? (v["AdapterRAM"] as number) : undefined
{v?.DriverVersion ? <span className="ml-1">· Driver {v.DriverVersion}</span> : null} const driver = typeof v?.["DriverVersion"] === "string" ? (v["DriverVersion"] as string) : undefined
</li> return (
))} <li key={`vid-${idx}`}>
<span className="font-medium text-foreground">{name}</span>
{typeof ram === "number" ? <span className="ml-1">{formatBytes(ram)}</span> : null}
{driver ? <span className="ml-1">· Driver {driver}</span> : null}
</li>
)
})}
</ul> </ul>
</div> </div>
) : null} ) : null}
@ -985,8 +996,8 @@ export function MachineDetails({ machine }: MachineDetailsProps) {
<div className="rounded-md border border-slate-200 bg-slate-50/60 p-3"> <div className="rounded-md border border-slate-200 bg-slate-50/60 p-3">
<p className="text-xs font-semibold uppercase text-slate-500">Defender</p> <p className="text-xs font-semibold uppercase text-slate-500">Defender</p>
<div className="mt-2 grid grid-cols-2 gap-2 text-sm"> <div className="mt-2 grid grid-cols-2 gap-2 text-sm">
<DetailLine label="Antivírus" value={fmtBool((windowsExt.defender as any)?.AntivirusEnabled)} /> <DetailLine label="Antivírus" value={fmtBool(readBool(windowsExt.defender, "AntivirusEnabled"))} />
<DetailLine label="Proteção em tempo real" value={fmtBool((windowsExt.defender as any)?.RealTimeProtectionEnabled)} /> <DetailLine label="Proteção em tempo real" value={fmtBool(readBool(windowsExt.defender, "RealTimeProtectionEnabled"))} />
</div> </div>
</div> </div>
) : null} ) : null}