import dayjs from "dayjs"; import { useLockFn } from "ahooks"; import { X } from "lucide-react"; import { Button } from "@/components/ui/button"; import { deleteConnection } from "@/services/api"; import parseTraffic from "@/utils/parse-traffic"; interface TagProps { children: React.ReactNode; className?: string; } const Tag: React.FC = ({ children, className }) => { const baseClasses = "text-[10px] px-1 leading-[1.375] border rounded-[4px] border-muted-foreground/35"; return ( {children} ); }; interface Props { value: IConnectionsItem; onShowDetail?: () => void; } export const ConnectionItem = (props: Props) => { const { value, onShowDetail } = props; const { id, metadata, chains, start, curUpload, curDownload } = value; const onDelete = useLockFn(async () => deleteConnection(id)); const showTraffic = curUpload! >= 100 || curDownload! >= 100; return (
{metadata.host || metadata.destinationIP}
{metadata.network} {metadata.type} {!!metadata.process && {metadata.process}} {chains?.length > 0 && {[...chains].reverse().join(" / ")}} {dayjs(start).fromNow()} {showTraffic && ( {parseTraffic(curUpload!)} / {parseTraffic(curDownload!)} )}
); };