import * as React from 'react'; import PropTypes from 'prop-types'; import { Link } from 'react-router-dom'; import Card from '@mui/material/Card'; import IconButton from '@mui/material/IconButton'; import CardActionArea from '@mui/material/CardActionArea'; import Chip from '@mui/material/Chip'; import MoreHorizIcon from '@mui/icons-material/MoreHoriz'; import { DateTime } from 'luxon'; import FlowAppIcons from 'components/FlowAppIcons'; import FlowContextMenu from 'components/FlowContextMenu'; import useFormatMessage from 'hooks/useFormatMessage'; import * as URLS from 'config/urls'; import { Apps, CardContent, ContextMenu, Title, Typography } from './style'; import { FlowPropType } from 'propTypes/propTypes'; function getFlowStatusTranslationKey(status) { if (status === 'published') { return 'flow.published'; } else if (status === 'paused') { return 'flow.paused'; } return 'flow.draft'; } function getFlowStatusColor(status) { if (status === 'published') { return 'success'; } else if (status === 'paused') { return 'error'; } return 'info'; } function FlowRow(props) { const formatMessage = useFormatMessage(); const contextButtonRef = React.useRef(null); const [anchorEl, setAnchorEl] = React.useState(null); const { flow, onDuplicateFlow, onDeleteFlow, appKey } = props; const handleClose = () => { setAnchorEl(null); }; const onContextMenuClick = (event) => { event.preventDefault(); event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); setAnchorEl(contextButtonRef.current); }; const createdAt = DateTime.fromMillis(parseInt(flow.createdAt, 10)); const updatedAt = DateTime.fromMillis(parseInt(flow.updatedAt, 10)); const isUpdated = updatedAt > createdAt; const relativeCreatedAt = createdAt.toRelative(); const relativeUpdatedAt = updatedAt.toRelative(); return ( <> <Typography variant="h6" noWrap> {flow?.name} </Typography> <Typography variant="caption"> {isUpdated && formatMessage('flow.updatedAt', { datetime: relativeUpdatedAt, })} {!isUpdated && formatMessage('flow.createdAt', { datetime: relativeCreatedAt, })} </Typography> {anchorEl && ( )} ); } FlowRow.propTypes = { flow: FlowPropType.isRequired, onDeleteFlow: PropTypes.func, onDuplicateFlow: PropTypes.func, appKey: PropTypes.string, }; export default FlowRow;