import { CircleUser } from "lucide-react"; import StatusCircle from "~/components/StatusCircle"; import { Machine, User } from "~/types"; import cn from "~/utils/cn"; import MenuOptions from "./menu"; interface UserRowProps { role: string; user: User & { machines: Machine[] }; } export default function UserRow({ user, role }: UserRowProps) { const isOnline = user.machines.some((machine) => machine.online); const lastSeen = user.machines.reduce( (acc, machine) => Math.max(acc, new Date(machine.lastSeen).getTime()), 0, ); return (
{user.profilePicUrl ? ( {user.name ) : ( )}

{user.name || user.displayName}

{user.email}

{mapRoleToName(role)}

{new Date(user.createdAt).toLocaleDateString()}

{isOnline ? "Connected" : new Date(lastSeen).toLocaleString()}

); } function mapRoleToName(role: string) { switch (role) { case "no-oidc": return

Unmanaged

; case "invalid-oidc": return

Invalid

; case "no-role": return

Unregistered

; case "owner": return "Owner"; case "admin": return "Admin"; case "network_admin": return "Network Admin"; case "it_admin": return "IT Admin"; case "auditor": return "Auditor"; case "member": return ( Pending Approval ); default: return "Unknown"; } }