import type { FC, Ref } from 'react' import type { Model, ModelItem, ModelProvider, } from '../declarations' import { useTranslation } from 'react-i18next' import { Tooltip, TooltipContent, TooltipTrigger } from '@/app/components/base/ui/tooltip' import { useProviderContext } from '@/context/provider-context' import { cn } from '@/utils/classnames' import ModelIcon from '../model-icon' import ModelName from '../model-name' import { useCredentialPanelState } from '../provider-added-card/use-credential-panel-state' import { deriveTriggerStatus, TRIGGER_STATUS_BADGE_I18N, TRIGGER_STATUS_TOOLTIP_I18N, } from './derive-trigger-status' export type TriggerProps = { open?: boolean currentProvider?: ModelProvider | Model currentModel?: ModelItem providerName?: string modelId?: string isInWorkflow?: boolean settingsRef?: Ref } const Trigger: FC = ({ currentProvider, currentModel, providerName, modelId, isInWorkflow, settingsRef, }) => { const { t } = useTranslation() const { modelProviders } = useProviderContext() const currentModelProvider = modelProviders.find(p => p.provider === providerName) const credentialState = useCredentialPanelState(currentModelProvider) const status = deriveTriggerStatus(modelId, providerName, currentModelProvider, currentModel, credentialState) const badgeKey = TRIGGER_STATUS_BADGE_I18N[status as keyof typeof TRIGGER_STATUS_BADGE_I18N] const tooltipKey = TRIGGER_STATUS_TOOLTIP_I18N[status as keyof typeof TRIGGER_STATUS_TOOLTIP_I18N] const badgeLabel = badgeKey ? t(badgeKey, { ns: 'common' }) : null const tooltipLabel = tooltipKey ? t(tooltipKey, { ns: 'common' }) : null const isActive = status === 'active' const iconProvider = currentProvider || modelProviders.find(item => item.provider === providerName) if (status === 'empty') { return (
{t('workflow:errorMsg.configureModel')}
) } return (
{currentModel ? ( ) :
{modelId}
}
{badgeKey && ( tooltipLabel ? (
{badgeLabel}
)} /> {tooltipLabel} ) : (
{badgeLabel}
) )} {!badgeKey && (
)}
) } export default Trigger