({
loggedCall,
isExpanded,
onToggle,
showOptions,
}: {
loggedCall: LoggedCall;
isExpanded: boolean;
onToggle: () => void;
showOptions?: boolean;
})
| 92 | }; |
| 93 | |
| 94 | export const TableRow = ({ |
| 95 | loggedCall, |
| 96 | isExpanded, |
| 97 | onToggle, |
| 98 | showOptions, |
| 99 | }: { |
| 100 | loggedCall: LoggedCall; |
| 101 | isExpanded: boolean; |
| 102 | onToggle: () => void; |
| 103 | showOptions?: boolean; |
| 104 | }) => { |
| 105 | const isError = loggedCall.statusCode !== 200; |
| 106 | const requestedAt = dayjs(loggedCall.requestedAt).format("MMMM D h:mm A"); |
| 107 | const fullTime = dayjs(loggedCall.requestedAt).toString(); |
| 108 | |
| 109 | const isChecked = useAppStore( |
| 110 | (s) => |
| 111 | (s.selectedLogs.defaultToSelected && !s.selectedLogs.deselectedLogIds.has(loggedCall.id)) || |
| 112 | s.selectedLogs.selectedLogIds.has(loggedCall.id), |
| 113 | ); |
| 114 | const toggleChecked = useAppStore((s) => s.selectedLogs.toggleSelectedLogId); |
| 115 | |
| 116 | const tagNames = useSelectedProject().data?.tagNames; |
| 117 | const visibleColumns = useAppStore((s) => s.columnVisibility.visibleColumns); |
| 118 | |
| 119 | const visibleTagNames = useMemo(() => { |
| 120 | return tagNames?.filter((tagName) => visibleColumns.has(tagName)) ?? []; |
| 121 | }, [tagNames, visibleColumns]); |
| 122 | |
| 123 | const isClientInitialized = useIsClientInitialized(); |
| 124 | if (!isClientInitialized) return null; |
| 125 | |
| 126 | return ( |
| 127 | <> |
| 128 | <Tr |
| 129 | onClick={onToggle} |
| 130 | key={loggedCall.id} |
| 131 | _hover={{ bgColor: "gray.50", cursor: "pointer" }} |
| 132 | sx={{ |
| 133 | "> td": { borderBottom: "none" }, |
| 134 | }} |
| 135 | fontSize="sm" |
| 136 | > |
| 137 | {showOptions && ( |
| 138 | <Td> |
| 139 | <Checkbox |
| 140 | isChecked={isChecked} |
| 141 | onChange={() => toggleChecked(loggedCall.id)} |
| 142 | _hover={{ borderColor: "gray.300" }} |
| 143 | /> |
| 144 | </Td> |
| 145 | )} |
| 146 | {visibleColumns.has(StaticColumnKeys.SENT_AT) && ( |
| 147 | <Td> |
| 148 | <Tooltip label={fullTime} placement="top"> |
| 149 | <Box whiteSpace="nowrap" minW="120px"> |
| 150 | {requestedAt} |
| 151 | </Box> |
nothing calls this directly
no test coverage detected