'use client' import type { Emoji } from '@/app/components/tools/types' import type { InputVar, Variable } from '@/app/components/workflow/types' import type { PublishWorkflowParams } from '@/types/workflow' import { RiArrowRightUpLine, RiHammerLine } from '@remixicon/react' import { useTranslation } from 'react-i18next' import Button from '@/app/components/base/button' import Loading from '@/app/components/base/loading' import Indicator from '@/app/components/header/indicator' import WorkflowToolModal from '@/app/components/tools/workflow-tool' import { cn } from '@/utils/classnames' import Divider from '../../base/divider' import { useConfigureButton } from './hooks/use-configure-button' type Props = { disabled: boolean published: boolean detailNeedUpdate: boolean workflowAppId: string icon: Emoji name: string description: string inputs?: InputVar[] outputs?: Variable[] handlePublish: (params?: PublishWorkflowParams) => Promise onRefreshData?: () => void disabledReason?: string } const WorkflowToolConfigureButton = ({ disabled, published, detailNeedUpdate, workflowAppId, icon, name, description, inputs, outputs, handlePublish, onRefreshData, disabledReason, }: Props) => { const { t } = useTranslation() const { showModal, isLoading, outdated, payload, isCurrentWorkspaceManager, openModal, closeModal, handleCreate, handleUpdate, navigateToTools, } = useConfigureButton({ published, detailNeedUpdate, workflowAppId, icon, name, description, inputs, outputs, handlePublish, onRefreshData, }) return ( <> {(!published || !isLoading) && (
{isCurrentWorkspaceManager ? (
!disabled && !published && openModal()} >
{t('common.workflowAsTool', { ns: 'workflow' })}
{!published && ( {t('common.configureRequired', { ns: 'workflow' })} )}
) : (
{t('common.workflowAsTool', { ns: 'workflow' })}
)} {disabledReason && (
{disabledReason}
)} {published && (
{outdated && (
{t('common.workflowAsToolTip', { ns: 'workflow' })}
)}
)}
)} {published && isLoading &&
} {showModal && ( )} ) } export default WorkflowToolConfigureButton