mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 13:37:30 +00:00
45 lines
1 KiB
TypeScript
45 lines
1 KiB
TypeScript
import React from "react";
|
|
import { useDispatch } from "react-redux";
|
|
import { push } from "react-router-redux";
|
|
|
|
import { IHost } from "interfaces/host";
|
|
import helpers from "kolide/helpers";
|
|
import PATHS from "router/paths";
|
|
import Button from "components/buttons/Button/Button";
|
|
|
|
interface ILinkCellProps {
|
|
value: string;
|
|
host: IHost;
|
|
}
|
|
|
|
const LinkCell = (props: ILinkCellProps): JSX.Element => {
|
|
const { value, host } = props;
|
|
|
|
const dispatch = useDispatch();
|
|
|
|
const onHostClick = (selectedHost: IHost): void => {
|
|
dispatch(push(PATHS.HOST_DETAILS(selectedHost)));
|
|
};
|
|
|
|
const lastSeenTime = (status: string, seenTime: string): string => {
|
|
const { humanHostLastSeen } = helpers;
|
|
|
|
if (status !== "online") {
|
|
return `Last Seen: ${humanHostLastSeen(seenTime)} UTC`;
|
|
}
|
|
|
|
return "Online";
|
|
};
|
|
|
|
return (
|
|
<Button
|
|
onClick={() => onHostClick(host)}
|
|
variant="text-link"
|
|
title={lastSeenTime(host.status, host.seen_time)}
|
|
>
|
|
{value}
|
|
</Button>
|
|
);
|
|
};
|
|
|
|
export default LinkCell;
|