import { useMemo } from 'react' import { Link } from 'react-router-dom' import classNames from 'classnames' import IconSchedule from '~/icons/compiled/Schedule' import IconSettings from '~/icons/compiled/Settings' import { getActionUrl, getDescription, getName, getStatus, } from '~/utils/actions' import { actionScheduleToDescriptiveString } from '~/utils/actionSchedule' import IVTooltip from '~/components/IVTooltip' import { ListViewToggleProps } from '../ListViewToggle' import { ActionsListProps } from '.' import WrapOnUnderscores from '../WrapOnUnderscores' import { useOrgParams } from '~/utils/organization' interface ActionsListItemProps { action: ActionsListProps['actions'][0] canRun?: boolean canConfigure?: boolean showFullSlug?: boolean viewMode: ListViewToggleProps['value'] actionMode: ActionsListProps['mode'] slugPrefix?: string } export default function ActionsListItem({ canRun, action, actionMode, canConfigure, showFullSlug, viewMode, slugPrefix, }: ActionsListItemProps) { const { orgEnvSlug } = useOrgParams() const hostStatus = getStatus(action) ?? 'OFFLINE' const actionOffline = hostStatus === 'OFFLINE' const canRunAction = canRun && action.canRun const name = useMemo(() => { let name = getName(action) if ( slugPrefix && name === action.slug && name.startsWith(`${slugPrefix}/`) ) { name = name.substring(slugPrefix.length + 1) } return name }, [action, slugPrefix]) const description = getDescription(action) const href = useMemo( () => getActionUrl({ base: window.location.origin, orgEnvSlug, mode: actionMode, slug: action.slug, }), [orgEnvSlug, action.slug, actionMode] ) return (
{canConfigure && (
) }